【发布时间】:2021-03-10 14:28:43
【问题描述】:
我正在尝试使用 NSIS 安装程序为程序 (JAGS) 编写 Scoop app manifest。我想从 PowerShell 运行安装程序。
NSIS 文档说使用/D 开关来设置安装目录。但是,安装程序使用 NSIS 的 MUI 宏来允许在图形安装程序中设置目录。出于某种原因,这不尊重/D 开关。还有其他方法可以强制 NSIS MUI 安装到特定目录吗?
【问题讨论】:
我正在尝试使用 NSIS 安装程序为程序 (JAGS) 编写 Scoop app manifest。我想从 PowerShell 运行安装程序。
NSIS 文档说使用/D 开关来设置安装目录。但是,安装程序使用 NSIS 的 MUI 宏来允许在图形安装程序中设置目录。出于某种原因,这不尊重/D 开关。还有其他方法可以强制 NSIS MUI 安装到特定目录吗?
【问题讨论】:
这与MUI无关,因为他们使用的是MultiUser头文件。
/D 只是在安装程序中的任何代码运行之前设置$InstDir,MultiUser 更改.onInit 中的$InstDir,覆盖使用/D 设置的任何内容。
你可以欺骗它相信它已经安装了:
!define JAGS_VERSION ??? ; I don't know which version but you probably do, or check your registry
WriteRegStr HKCU "SOFTWARE\JAGS\JAGS-${JAGS_VERSION}" "InstallDir" "c:\new dir for single user"
WriteRegStr HKLM "SOFTWARE\JAGS\JAGS-${JAGS_VERSION}" "InstallDir" "c:\new dir for all users"
【讨论】: