如果没有选定的组件,则禁用组件页面上的“下一步”按钮

时间:2011-12-07 05:35:11

标签: installer nsis

我正在使用NSIS 2.46为我的Windows应用程序创建一个安装程序,我有一个包含12个复选框的组件页面,这是我的NSIS代码中的12个部分,现在我想要禁用“下一步”按钮,如果没有用户检查部分,我正在使用此代码: NSIS Code

不知怎的,它不接受R9以上的R寄存器......

    SectionGetFlags ${section11} $R10 
    SectionGetFlags ${section12} $R11

我得到的编译器错误是 Compiler error

如果有超过10个组件,请告诉我如何禁用“下一步”按钮...

1 个答案:

答案 0 :(得分:3)

基本的NSIS寄存器是$ 0 ... $ 9和$ R0 ... $ R9,所以你应该在前两节使用$ 1和$ 2。或者,如果需要,您可以创建更多变量; Var /GLOBAL R10

如果section1到section12的编号没有间隙,则可以使用循环:

!include LogicLib.nsh

Section A S_1
SectionEnd
Section /o B S_2
SectionEnd
Section C S_3
SectionEnd


Function .onSelChange
StrCpy $0 0
StrCpy $1 ${S_1}
${DoWhile} $1 <= ${S_3}
    ${If} ${SectionIsSelected} $1
        StrCpy $0 1
        ${ExitDo}
    ${EndIf}
    IntOp $1 $1 + 1
${Loop}
GetDlgItem $1 $HwndParent 1
EnableWindow $1 $0
FunctionEnd