我正在尝试构建NSIS安装程序并将其与必要的驱动程序(来自供应商的MSI文件)打包在一起。最终,我想在背景中静默安装这些驱动程序。但是,我似乎无法正常工作。
在我的NSIS脚本中,我具有以下内容:
ExecWait 'msiexec /i "$INSTDIR\Flash.msi INSTALLDIR="$INSTDIR\Drivers\Flash""'
似乎执行了;如果我从上述片段中删除了INSTALLDIR
开关,它将按预期运行驱动程序安装。但是当我把它放在里面时,我会被下面的窗口打招呼
但是,直接在Powershell中运行以下命令即可实现我想要的功能,并按预期设置适当的安装目录:
.\Flash.msi INSTALLDIR=".\Drivers\Flash\"
我猜这是一个愚蠢的引号不匹配,但是我已经尝试了很多,并且得到了相同的结果。
答案 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脚本文件格式下的“字符串”部分。
更新了多余的转义引号。