将命令行变量传递到基于WiXx的Windows Installer MSI

Jer*_*ink 14 windows-installer wix command-line-arguments

我正在使用WiX构建一个MSI安装程序,我正在使用WixUI_Advanced.我的定义ApplicationFolder看起来像这样,遵循另一个SO答案(WiX技巧和提示)的建议.

  <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="$(var.PlatformProgramFilesFolder)">
        <Directory Id="APPLICATIONFOLDER" Name="$(var.InstallName)">
Run Code Online (Sandbox Code Playgroud)

我现在想让用户选择进行静默安装并ApplicationFolder在路径上传递名称,相对于相应的程序文件文件夹或绝对名称.

我知道我可以在命令行上传递公共属性值msiexec,但是如何将其用作值ApplicationFolder以及如何为绝对路径和相对路径设置它.

Ale*_*nov 17

您只需在运行msiexec时在命令行上定义属性:

msiexec /i product.msi APPLICATIONFOLDER="C:\Program Files\Company\Product\"
Run Code Online (Sandbox Code Playgroud)

这些文件将安装到"C:\ Program Files\Company\Product"目录中.

我建议在这里使用绝对路径.相对路径可能会导致意外结果.

  • @Jeroen我明白了.我可以建议使用MSI详细日志来查找为什么修改了APPLICATIONFOLDER的值以及在哪里.将包运行为`msiexec/i package.msi/lv*x log.txt APPLICATIONFOLDER ="C:\ Program Files\Company\Product \"`.然后在日志中搜索"APPLICATIONFOLDER",您将看到它何时被修改.(对不起,我花了一段时间.) (2认同)