Wix - 根据条件安装目录

Bra*_*ess 4 directory registry wix

在我的 wix 源代码中,我必须在注册表中查找 2 个条目才能获取安装目录:

<Property Id="INSTALLDIR_A"> 
 <RegistrySearch Id='RegA' Type='raw' 
   Root='HKLM' Key='Software\Path\To\A' Name='InstallLocation' /> 
Run Code Online (Sandbox Code Playgroud)

 <Property Id="INSTALLDIR_B"> 
 <RegistrySearch Id='RegB' Type='raw' 
   Root='HKLM' Key='Software\Path\To\B' Name='InstallLocation' /> 
Run Code Online (Sandbox Code Playgroud)

我的安装目录必须是 INSTALLDIR_A 或 INSTALLDIR_B。如果我只需要查看 1 个条目,我会这样实现:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="INSTALLDIR" Name="My path">
    <!-- further code -->
  </Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)

但我希望 INSTALLDIR 为 INSTALLDIR_A 或 INSTALLDIR_B,具体取决于定义的是哪一个。如何实现这一目标?

小智 5

有一个自定义操作 SetDirectory ( http://wixtoolset.org/documentation/manual/v3/xsd/wix/setdirectory.html )。您可以尝试使用第一个值作为默认值,如果设置了另一个值则覆盖它:

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
      <Directory Id="INSTALLFOLDER" Name="Software\Path\To\A" />
    </Directory>
  </Directory>

  <SetDirectory Id="INSTALLFOLDER" Value="[INSTALLDIR_B]">INSTALLDIR_B AND NOT INSTALLDIR_A</SetDirectory>
</Fragment>
Run Code Online (Sandbox Code Playgroud)