2014-07-07 46 views
1

在我的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。如果一定要我看只有1项,我就已经实现了它这样:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLDIR" Name="My path"> 
    <!-- further code --> 
    </Directory> 
</Directory> 

但我想INSTALLDIR是要么INSTALLDIR_A或INSTALLDIR_B取决于哪一个定义。如何实现这一目标?

+2

可能重复[WIX:设置基于条件的属性](http://stackoverflow.com/问题/ 1690162 /威克斯 - 设置一个属性,基于上一个条件) –

回答

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>