我已经构建了一个安装程序,它包含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
所以我先安装所有组件,然后再次运行安装程序。这次我在组件页面上看不到任何组件。但是当我在该页面上按下安装时,所有部分仍然执行。有人可以帮忙吗?
(我已经从组件页面按下了安装按钮,但未列出任何组件。但我看到这些部分正在详细信息窗格中安装。)
答案 0 :(得分:1)
不要使用相对跳转来跳过宏,因为宏可以超过一条指令。使用LogicLib.nsh中的IfErrors label
或${If} ${Errors}
。