1

是否可以仅在需要时调用 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

//默认勾选此部分,即用户将无法选择或取消选择此部分,必须执行此操作..........怎么做?要隐藏它,我在其名称中包含一个 - 符号。它的名字是“强制性的”

Section "-mandatory" SEC_UPDATE
    #Do update............
SectionEnd

我在 NSIS 安装程序的自定义对话框页面上有两个 RadioButton(演示和更新)。我希望当用户选择安装更新(选择更新单选按钮)时,跳过组件页面,并自动检查并执行指定的部分。

但是,如果用户选择安装 DEM(选择 DEMO 单选按钮),则不会跳过组件页面,用户可以在该组件页面上选中或取消选中部分。

4

1 回答 1

1

始终调用页面回调,但您可以将逻辑放入函数中:

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

于 2011-04-29T10:02:23.773 回答