在nsis中运行msiexec时指定目标目录

在nsis中运行msiexec时指定目标目录,nsis,windows-installer,Nsis,Windows Installer,我正在尝试使用msiexec安装7-Zip.msi。虽然我可以使用以下nsis命令执行msi,但默认安装为C:\Program Files ExecWait '"msiexec" /passive /i "$OUTDIR\<msi filename>.msi"' 但是,当我运行nsis exe时,我没有收到任何错误,但是7-Zip尚未安装到C:\Software\7-Zip目录 有人知道在使用msiexec时如何指定目标安装目录吗 ExecWait '"msiexec&q

我正在尝试使用msiexec安装7-Zip.msi。虽然我可以使用以下nsis命令执行msi,但默认安装为C:\Program Files

ExecWait '"msiexec" /passive /i "$OUTDIR\<msi filename>.msi"'
但是,当我运行nsis exe时,我没有收到任何错误,但是7-Zip尚未安装到C:\Software\7-Zip目录

有人知道在使用msiexec时如何指定目标安装目录吗

ExecWait '"msiexec" /passive /i "C:\Temp\7-Zip.msi" INSTALLDIR="$OUTDIR"'

使用
INSTALLDIR
解决了这个问题。似乎
INSTALLDIR
是7-Zip.msi的特定属性。某些msi文件使用
TARGETDIR

为什么只使用NSIS标记此文件?它甚至与NSIS无关。“它甚至与NSIS无关”-你怎么能这么肯定呢。您是否通过NSIS ExecWait函数调用查看它如何解析提供的值?ExecWait不解析$variables以外的任何内容(如大多数NSIS指令),然后它只调用CreateProcess。编译器会删除最外层的引号集。
TARGETDIR
是标准属性,但不幸的是,许多(大多数?)设置不尊重这一点,并为安装目录定义自己的属性。
ExecWait '"msiexec" /passive /i "C:\Temp\7-Zip.msi" INSTALLDIR="$OUTDIR"'