即使我删除了部分,NSIS 也会安装它们

NSIS installs sections even after I have removed them

我已经构建了一个安装程序,它由 5 个 sections/components 组成。我在组件页面之前创建了一个前置功能来检查安装了哪些组件,只有当前没有安装的组件才会显示在组件页面上。

!define MUI_PAGE_CUSTOMFUNCTION_PRE selectSections
!insertmacro MUI_PAGE_COMPONENTS

...
Function selectSections
            ; remove sections which are already installed
            ReadRegStr [=10=] HKLM "${REG_INSTALL}" "SEC_EXTRACTOR"
            IfErrors +2
            !insertmacro RemoveSection ${SEC_EXTRACTOR}
            !insertmacro SelectSection ${SEC_EXTRACTOR}
            ; so on for all components
FunctionEnd

所以我先安装所有组件,然后 运行 再次安装程序。这次我在组件页面上没有看到任何组件。但是当我在该页面上按安装时,所有部分仍会执行。谁能帮忙?

(我已从组件页面按下安装按钮,该页面未列出任何组件。但我在详细信息窗格中看到正在安装这些部分。)

不要使用相对跳转来跳过宏,因为一个宏可能不止一条指令。使用 IfErrors label${If} ${Errors} 来自 LogicLib.nsh.