MUI对话框的PRE函数可以只在需要时调用吗?
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS
Function SkipComponentsPage
Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd
//默认情况下,该部分将被选中,也就是说,用户将无法选择或取消选择该部分,这必须执行..........如何做到这一点?为了隐藏它,我在它的名字中加入了一个-符号。它的名字是"mandatory"
Section "-mandatory" SEC_UPDATE
#Do update............
SectionEnd
我有两个RadioButtons (Demo &更新)在我的自定义对话框页的NSIS安装程序。我希望当用户选择安装UPDATE(选择UPDATE单选按钮)时,跳过Components Page,并自动检查并执行指定的Section。
但是如果用户选择安装DEM(选择DEMO单选按钮),那么组件页面不会被跳过&用户可以选中或取消选中该组件页面上的部分。
总是调用页面回调,但是您可以将逻辑放入函数中:
...
section "" SEC_UPDATE
sectionend
Function SkipComponentsPage
!insertmacro UnSelectSection ${SEC_UPDATE} ; Don't include update with demo by default?
${If} $InstallType == UPDATE
!insertmacro SelectSection ${SEC_UPDATE}
Abort
${EndIf}
Functionend
如果你想让用户能够在演示模式下选择更新,我不太清楚,但如果你想强制更新,你可以使该部分只读:
section "Update" SEC_UPDATE
SectionIn RO
sectionend
(并从pre函数中删除UnSelectSection调用)
…或者像你建议的那样,使用name前缀使该部分不可见