2012-02-17 45 views
0

比較,當我得到我的achitecture類型是這樣的:串狀況

<Property Id="PLATTFORM"> 
      <RegistrySearch Id="myRegSearchPalttform" 
       Root="HKLM" 
       Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 
       Name="PROCESSOR_ARCHITECTURE" 
       Type="raw"> 
      </RegistrySearch> 
</Property> 

,並要檢查,如果是「AMD64」是這樣的:

<?define myPlattform = [PLATTFORM] ?> 
<?if $(var.myPlattform) = AMD64 ?> 
some stuff 
     <?else ?> 
some stuff 
     <?endif ?> 

失敗。 當我設置靜態值:

<?define stest = AMD64 ?> 
     <?if $(var.stest) = AMD64 ?> 

它會在真正的範圍。那麼爲什麼註冊表中的值(AMD64的值)與我的證明字符串不一致?

坦提前

回答

0

<?define myPlattform = [PLATTFORM] ?>

大概是因爲myPlattform是一個預處理器變量和PLATTFORM財產以往有一個值被分配。如果你想有條件地安裝不同的組件,你可以試試這種方式:How to use conditions in features in WiX?

這個問題可能是Is there a way to set a preprocessor variable to the value of a property?的一個副本。

更新:如果你的目標是基於架構來設置安裝位置,你的架構通過使用您指定的註冊表搜索「PLATTFORM」屬性決定的,那麼你可以嘗試以下方法:

<Property Id="PLATTFORM"> 
    <RegistrySearch Id="myRegSearchPalttform" 
     Root="HKLM" 
     Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 
     Name="PROCESSOR_ARCHITECTURE" 
     Type="raw"> 
    </RegistrySearch> 
</Property> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="INSTALLFOLDER" Name="SomeValue" /> 
    </Directory> 
</Directory> 

<ComponentGroup Id="ProductComponentGroup"> 
    <Component Id="ProductComponent" Guid="INSERT-GUID-HERE" Directory="INSTALLFOLDER"> 
    <File Id="TestTextFile.txt" Source=".\TestTextFile.txt" KeyPath="yes"/> 
    </Component> 
</ComponentGroup> 

<Feature Id="ProductFeature" Level="1"> 
    <ComponentGroupRef Id="ProductComponentGroup"/> 
</Feature> 

<SetDirectory Id="INSTALLFOLDER" Value="[ProgramFilesFolder]\SomeOtherValue"> 
    PLATTFORM="AMD" 
</SetDirectory> 

注意:請參閱我使用SetDirectory元素。我通常下載WiX每週發行版,並且在測試上述示例之前從未使用過該元素。因此我不確定SetDirectory的最初版本是什麼。

+0

重點是,我必須改變一些目錄路徑,這取決於架構。我如何動態實現這取決於註冊表項??? – user1216201 2012-02-21 09:19:11

+0

我更新了我的答案,其中包含一些試圖通過您的評論完成您的澄清的示例代碼。 – BryanJ 2012-02-23 04:49:52