我正在使用NSIS 2.46为我的windows应用程序创建安装程序,我有一个带有12个复选框的组件页面,也就是我的NSIS代码中的12个部分,现在我想禁用'Next‘按钮,如果用户没有选中任何部分,我使用以下代码:

不知何故,它不接受高于R9的R寄存器...
SectionGetFlags ${section11} $R10
SectionGetFlags ${section12} $R11我得到的编译器错误是

请告诉我如何禁用‘下一步’按钮,如果有超过10个组件...
发布于 2011-12-07 16:09:49
基本的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
FunctionEndhttps://stackoverflow.com/questions/8410859
复制相似问题