2017-04-05 75 views
1

运行MSIEXEC当我尝试使用MSIEXEC安装7 Zip.msi指定目标目录。虽然我可以使用下面的命令NSIS它默认安装到C执行MSI:\ Program Files文件在NSIS

ExecWait '"msiexec" /passive /i "$OUTDIR\<msi filename>.msi"' 

我无法找到指定自定义目标目录安装的方式。

MSIEXEC文档建议我可以用TARGETDIR。所以,我想下面的

SetOutPath "C:\Software\7-Zip" 
DetailPrint "Installing 7-Zip to $OUTDIR" 
ExecWait '"msiexec" /passive /i "$OUTDIR\7-Zip.msi" TARGETDIR="$OUTDIR"' 

但是当我运行exe文件NSIS我没有得到任何错误,但是7-Zip的尚未安装到C:\ SOFTWARE \ 7-Zip的目录。

有谁知道使用MSIEXEC你是如何指定目标安装目录?

+0

为什么只用NSIS标签呢?它甚至不是真正的NSIS相关的。 – Anders

+0

“这甚至不是真正的NSIS相关的” - 你怎么能这么肯定。你是否通过NSIS ExecWait函数调用来了解它如何分析提供的值? – Juckky

+0

ExecWait不分析超过$变量(最喜欢的NSIS指令),然后它只是调用CreateProcess的任何其他。最外面的一组引号被编译器删除。 – Anders

回答

1

ExecWait ' “MSIEXEC”/被动/ I “C:\ TEMP \ 7 Zip.msi” INSTALLDIR = “$ OUTDIR”'

使用INSTALLDIR解决的问题。看起来好像INSTALLDIR是7-Zip.msi特有的属性。一些msi文件使用TARGETDIR。

+0

'TARGETDIR'是标准的财产,但遗憾的是很多(大多数?)设置不尊重和定义自己的财产的安装目录。 – zett42