我正在使用NSIS 2.46为我的Windows应用程序创建一个安装程序,我有一个包含12个复选框的组件页面,这是我的NSIS代码中的12个部分,现在我想要禁用“下一步”按钮,如果没有用户检查部分,我正在使用此代码:
不知怎的,它不接受R9以上的R寄存器......
SectionGetFlags ${section11} $R10
SectionGetFlags ${section12} $R11
我得到的编译器错误是
如果有超过10个组件,请告诉我如何禁用“下一步”按钮...
答案 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