【问题标题】:NSIS installs sections even after I have removed them即使在我删除了部分后,NSIS 也会安装它们
【发布时间】:2017-05-14 03:00:52
【问题描述】:

我已经构建了一个安装程序,它由 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

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

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

【问题讨论】:

    标签: nsis


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 2016-04-09
      • 2019-06-04
      • 1970-01-01
      • 2020-08-08
      • 2017-09-17
      • 2020-03-22
      • 2019-09-22
      • 1970-01-01
      相关资源
      最近更新 更多