使用MUI时,是否从命令行设置NSIS安装目录?

使用MUI时,是否从命令行设置NSIS安装目录?,nsis,modern-ui,Nsis,Modern Ui,我正在尝试使用NSIS安装程序为程序()编写一个。我想从PowerShell运行安装程序 NSIS文档说明使用/D开关设置安装目录。但是,安装程序使用NSIS的MUI宏来允许在图形安装程序中设置目录。由于某些原因,这不符合/D开关。是否有其他方法强制NSIS MUI安装到特定目录?这与MUI无关,因为它们使用的是多用户头文件 /D只需在安装程序中的任何代码运行之前设置$InstDir,并且多用户在中更改$InstDir。onInit将覆盖使用/D设置的任何内容 您可以欺骗它,使其相信它已安装:

我正在尝试使用NSIS安装程序为程序()编写一个。我想从PowerShell运行安装程序


NSIS文档说明使用
/D
开关设置安装目录。但是,安装程序使用NSIS的MUI宏来允许在图形安装程序中设置目录。由于某些原因,这不符合
/D
开关。是否有其他方法强制NSIS MUI安装到特定目录?

这与MUI无关,因为它们使用的是多用户头文件

/D
只需在安装程序中的任何代码运行之前设置
$InstDir
,并且多用户在
中更改
$InstDir
。onInit
将覆盖使用
/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"

这与MUI无关,因为它们使用的是多用户头文件

/D
只需在安装程序中的任何代码运行之前设置
$InstDir
,并且多用户在
中更改
$InstDir
。onInit
将覆盖使用
/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"