即使我删除了部分,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.
我已经构建了一个安装程序,它由 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.