Ark*_*niK 1 windows-installer wix environment-variables
我是 MSI 开发(使用 WiX 或其他方式)的新手,我正在尝试读取环境变量的值并将其用作安装目录。我的 msi 也没有 GUI,并且不允许用户选择覆盖路径。
我可以使用以下命令成功读取 var:
<SetProperty
Id="TARGETINSTALLDIR"
Value="[%MY_ENV_VAR]\My\Install\Path"
After="LaunchConditions"
Sequence="first" />
Run Code Online (Sandbox Code Playgroud)
我可以在 msi 日志中看到检索到的正确路径。
我已尝试以下方法来设置返回的路径:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="APPLICATIONROOTDIRECTORY" Name="[TARGETINSTALLDIR]"/>
</Directory>
Run Code Online (Sandbox Code Playgroud)
还,
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="APPLICATIONROOTDIRECTORY" Name="TARGETINSTALLDIR"/>
</Directory>
Run Code Online (Sandbox Code Playgroud)
如果失败,我还尝试读取根目录中的目录路径,如下所示
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ROOT" Name="[%MY_ENV_VAR]">
<Directory Id="My" Name="My">
<Directory Id="Install" Name="Install">
<Directory Id="APPLICATIONROOTDIRECTORY" Name="Path"/>
</Directory>
</Directory>
</Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)
我是否缺少一些语法,或者我从根本上误解了应该如何完成此操作?
是的,我明白了。
我应该使用 SetDirectory 元素,而不是使用 SetProperty 元素。标记很简单;
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="APPLICATIONROOTDIRECTORY"/>
</Directory>
<SetDirectory Id="APPLICATIONROOTDIRECTORY" Value="[%MY_ENV_VAR]\My\Install\Path" Sequence="first" />
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助其他人。