自定义控件-调用NSIS安装程序中MUI的PRE函数,跳过NSIS安装程序中的页面/对话框



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前缀使该部分不可见

相关内容

最新更新