繁体   English   中英

在 NSIS 安装程序中调用 MUI 的 PRE 函数,在 NSIS 安装程序中跳过页面/对话框

[英]Calling PRE functions of MUI in NSIS installer, skipping pages/dialogs in NSIS installer

是否可以仅在需要时调用 MUI 对话框的 PRE function?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

Function SkipComponentsPage
 Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM