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

时间:2017-05-14 03:00:52

标签: nsis

我已经构建了一个安装程序,它包含5个部分/组件。我在组件页面之前创建了一个预功能,以检查安装了哪些组件,只有组件页面上才会显示当前未安装的组件。

!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

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

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

1 个答案:

答案 0 :(得分:1)

不要使用相对跳转来跳过宏,因为宏可以超过一条指令。使用LogicLib.nsh中的IfErrors label${If} ${Errors}