使用安装程序开关在NSIS脚本中运行MSIEXEC

时间:2018-07-20 15:12:11

标签: windows-installer install nsis msiexec

我正在尝试构建NSIS安装程序并将其与必要的驱动程序(来自供应商的MSI文件)打包在一起。最终,我想在背景中静默安装这些驱动程序。但是,我似乎无法正常工作。

在我的NSIS脚本中,我具有以下内容:

ExecWait 'msiexec /i "$INSTDIR\Flash.msi INSTALLDIR="$INSTDIR\Drivers\Flash""'

似乎执行了;如果我从上述片段中删除了INSTALLDIR开关,它将按预期运行驱动程序安装。但是当我把它放在里面时,我会被下面的窗口打招呼

enter image description here

但是,直接在Powershell中运行以下命令即可实现我想要的功能,并按预期设置适当的安装目录:

.\Flash.msi INSTALLDIR=".\Drivers\Flash\"

我猜这是一个愚蠢的引号不匹配,但是我已经尝试了很多,并且得到了相同的结果。

2 个答案:

答案 0 :(得分:2)

.msi路径的双引号关闭太晚了。

使用

ExecWait 'msiexec /i "$INSTDIR\Flash.msi" INSTALLDIR="$INSTDIR\Drivers\Flash"'

答案 1 :(得分:0)

您是否尝试过以下方法:

ExecWait 'msiexec /i "$INSTDIR\Flash.msi INSTALLDIR=$\"$INSTDIR\Drivers\Flash$\""'

ExecWait 'msiexec /i "$INSTDIR\Flash.msi INSTALLDIR=$\"$\"$INSTDIR\Drivers\Flash$\"$\""'

参考:http://nsis.sourceforge.net/Docs/Chapter4.html,然后看一下4.1脚本文件格式下的“字符串”部分。

更新了多余的转义引号。