2013-02-21 101 views
3

我想提示用戶額外的信息,如果選擇某個組件,但我不確定如何檢查給定的組件被選中。好像http://nsis.sourceforge.net/Docs/Chapter4.html#4.9.13.2可能是某種聯繫,但我的印象是,一個部分是一組組件的下...如何檢查在NSIS中是否選擇了一個組件?

安德斯

鑑於幫助下,我有這樣的作品:

!include MUI.nsh 
!include nsDialogs.nsh 
!include LogicLib.nsh 
!include sections.nsh 

Name A 
InstProgressFlags smooth colored 
LicenseBkColor /windows 
OutFile A.exe 
InstallDir $PROGRAMFILES\A 

Var Dialog 

Section "A" SEC_A 
SectionEnd 
Section "B" SEC_B 
SectionEnd 

!insertmacro MUI_PAGE_COMPONENTS 
Page custom getA setA # {{{ 
!insertmacro MUI_PAGE_DIRECTORY # {{{ install 
Function getA 

    ${Unless} ${SectionIsSelected} ${SEC_A} 
     Abort 
    ${EndUnless} 

    nsDialogs::Create 1018 
    Pop $Dialog 

    ${If} $Dialog == error 
     Abort 
    ${EndIf} 

    ${NSD_CreateLabel} 0 0 100% 12u "Test" 

    nsDialogs::Show 
FunctionEnd 
Function setA 
    MessageBox MB_OK "clicked?" 
FunctionEnd 
# }}} 
!insertmacro MUI_PAGE_INSTFILES 
!insertmacro MUI_UNPAGE_CONFIRM 
!insertmacro MUI_UNPAGE_INSTFILES 

回答

7

逢節(帶有名稱)顯示爲組件頁面上的複選框。 (段組可用於形成樹的佈局,但只有實際段包含可執行代碼)

sections.nsh包含得心應手輔助宏來操縱setions,如果你使用logiclib.nsh你可以做${If} ${SectionIsSelected} ${MYSECTION} ...

+0

我想這而且大部分工作。看看我的編輯仍然給我什麼問題... – 2013-02-21 21:18:54

+0

AHA!我明白了,它必須屬於SectionIsSelect才能工作的組。 – 2013-02-21 21:26:23

+0

呃,我錯了。它仍然使用第一部分,即使這是一個SelectionGroup。 – 2013-02-21 22:09:14

相關問題