2013-02-21 96 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

相关问题