NSIS即使在我删除了部分之后也会安装它们

NSIS即使在我删除了部分之后也会安装它们,nsis,Nsis,我构建了一个安装程序,它由5个部分/组件组成。我在components页面之前创建了一个pre函数,用于检查安装了哪些组件,只有当前未安装的组件才会显示在components页面上 !define MUI_PAGE_CUSTOMFUNCTION_PRE selectSections !insertmacro MUI_PAGE_COMPONENTS ... Function selectSections ; remove sections which are alread

我构建了一个安装程序,它由5个部分/组件组成。我在components页面之前创建了一个pre函数,用于检查安装了哪些组件,只有当前未安装的组件才会显示在components页面上

!define MUI_PAGE_CUSTOMFUNCTION_PRE selectSections
!insertmacro MUI_PAGE_COMPONENTS

...
Function selectSections
            ; remove sections which are already installed
            ReadRegStr $0 HKLM "${REG_INSTALL}" "SEC_EXTRACTOR"
            IfErrors +2
            !insertmacro RemoveSection ${SEC_EXTRACTOR}
            !insertmacro SelectSection ${SEC_EXTRACTOR}
            ; so on for all components
FunctionEnd
因此,我首先安装所有组件,然后再次运行安装程序。这次我在components页面上没有看到任何组件。但当我在那个页面上按install时,所有的部分仍然被执行。有人能帮忙吗


我在一个没有列出任何组件的组件页面上按下了安装按钮。但我看到这些部分安装在详细信息窗格中。

不要使用相对跳转跳过宏,因为宏可以是多条指令。使用LogicLib.nsh中的IfErrors标签或${If}${Errors}