2012-02-17 15 views
0

で比較します。文字列は、条件

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

、それは真の範囲に入る:私は静的な値を設定し 。だから、なぜ私の証明文字列と同じではないレジストリ(値AMD64がある)からの値ですか?事前に

たTaNx

答えて

0
myPlattformは、プリプロセッサ変数であるとPLATTFORMプロパティが今までの値を持つ前に割り当てられます。おそらくので

<?define 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

+0

私はあなたのコメントで明確になったことを達成しようとするいくつかのサンプルコードを含むように私の答えを更新しました。 – BryanJ