2014-07-07 47 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>