在我的wix源代码中,我必须在注册表中查找2个条目才能获得安装目录:
<Property Id="INSTALLDIR_A">
<RegistrySearch Id='RegA' Type='raw'
Root='HKLM' Key='Software\Path\To\A' Name='InstallLocation' />
<Property Id="INSTALLDIR_B">
<RegistrySearch Id='RegB' Type='raw'
Root='HKLM' Key='Software\Path\To\B' Name='InstallLocation' />
我的安装目录必须是INSTALLDIR_A或INSTALLDIR_B。如果我只需要查看一个条目,我就会这样实现:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="My path">
<!-- further code -->
</Directory>
</Directory>
但我希望INSTALLDIR可以是INSTALLDIR_A或INSTALLDIR_B,具体取决于定义的是哪一个。怎么做到这一点?
答案 0 :(得分:3)
为此设置了自定义操作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>