Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从环境变量在WiX中动态设置install dir_Wix_Windows Installer_Environment Variables - Fatal编程技术网

从环境变量在WiX中动态设置install dir

从环境变量在WiX中动态设置install dir,wix,windows-installer,environment-variables,Wix,Windows Installer,Environment Variables,我是MSI开发新手(使用WiX或其他方式),我正在尝试读取环境变量的值并将其用作安装目录。我的msi也没有gui,不允许用户覆盖路径 我可以通过以下方式成功读取变量: <SetProperty Id="TARGETINSTALLDIR" Value="[%MY_ENV_VAR]\My\Install\Path" After="LaunchConditions" Sequence="first" /> 我可以在msi日志中看到检索到的正确

我是MSI开发新手(使用WiX或其他方式),我正在尝试读取环境变量的值并将其用作安装目录。我的msi也没有gui,不允许用户覆盖路径

我可以通过以下方式成功读取变量:

<SetProperty 
    Id="TARGETINSTALLDIR" 
    Value="[%MY_ENV_VAR]\My\Install\Path" 
    After="LaunchConditions" 
    Sequence="first"  />

我可以在msi日志中看到检索到的正确路径

我尝试了以下方法来设置返回的路径:

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="APPLICATIONROOTDIRECTORY" Name="[TARGETINSTALLDIR]"/>
</Directory>

而且


如果失败,我还尝试读取根目录中的目录路径,如下所示

<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>


是我缺少了一些语法,还是我根本就误解了应该怎么做?

是的,我找到了答案

我不应该使用SetProperty元素,而应该使用SetDirectory元素。标记简单

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="APPLICATIONROOTDIRECTORY"/>
</Directory>
<SetDirectory Id="APPLICATIONROOTDIRECTORY" Value="[%MY_ENV_VAR]\My\Install\Path" Sequence="first"  />


希望这能帮助其他人解决问题。

是的,我找到了答案

我不应该使用SetProperty元素,而应该使用SetDirectory元素。标记简单

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="APPLICATIONROOTDIRECTORY"/>
</Directory>
<SetDirectory Id="APPLICATIONROOTDIRECTORY" Value="[%MY_ENV_VAR]\My\Install\Path" Sequence="first"  />

希望这能帮助其他人