2012-01-13 11 views
4

私はウィックスに新しいですし、私が行うための簡単な修正を持っているから、32ビットの差別、私はインストールインストーラを持っており、いくつかのDLLを登録しますが、我々はしたくありません64ビットアーキテクチャで2番目のdllをインストールする。ここでWIXインストーラ - ここ</p> <p>は私の問題です... 64-ビット

当社海流インストーラファイルのスキーマです: ... ...

私はこれがない。この

<Directory Id="INSTALLDIR" .....> 
    <Component Id="IDDLL" Guid="20E4601C-D93C-4A86-A0D9-31145D5443E6"> 
     <File Id="common.dll" Name="common.DLL" .... SelfRegCost="1"/> 
     <File Id="for32bits.dll" Name="for32bits.DLL" .... SelfRegCost="1"/> 
     <Condition> %PROCESSOR_ARCHITECTURE="x86" </Condition> 
    </Component> 

    <Component Id="IDDLL" Guid="20E4601C-D93C-4A86-A0D9-31145D5443E6"> 
     <File Id="common.dll" Name="common.DLL" .... SelfRegCost="1"/> 
     <Condition> %PROCESSOR_ARCHITECTURE~="x86" </Condition> 
    </Component> 
</Directory> 

のように、条件を追加してみました動作しません(シンボル重複エラー)

私もtr if文でIEDが、それはコンパイル時に処理されることになりそうだ、それはどちらかの仕事をしませんでした:

<Directory Id="INSTALLDIR" .....> 
    <Component Id="IDDLL" Guid="20E4601C-D93C-4A86-A0D9-31145D5443E6"> 
     <File Id="common.dll" Name="common.DLL" .... SelfRegCost="1"/> 
     <? if %PROCESSOR_ARCHITECTURE = "x86" ?> 
      <File Id="for32bits.dll" Name="for32bits.DLL" .... SelfRegCost="1"/> 
     <?endif?> 
    </Component> 
</Directory> 

誰かが私にこれをしてください行う方法についての手掛かりを与えることができますか?

答えて

4

一意のGUIDをそれぞれ、独自のコンポーネント内の各アーキテクチャを扱う:

<Directory Id="INSTALLDIR" .....> 
    <Component Id="IDDLL32" Guid="20E4601C-D93C-4A86-A0D9-31145D5443E6"> 
     <File Id="for32bits.dll" Name="for32bits.DLL" .... SelfRegCost="1"/> 
     <Condition> %PROCESSOR_ARCHITECTURE="x86" </Condition> 
    </Component> 

    <Component Id="IDDLL64" Guid="20E4601C-D93C-4A64-A0D9-31145D5443E6"> 
     <File Id="common.dll" Name="common.DLL" .... SelfRegCost="1"/> 
     <Condition> %PROCESSOR_ARCHITECTURE~="x86" </Condition> 
    </Component> 
</Directory> 
+0

おかげで、それが動作:

次の例では、選択的に地元のアーキテクチャに基づいてレジストリキーをインストールします! – Traktopel

4

私の経験では、%PROCESSOR_ARCHITECTUREが信頼できないということです。私はVersionNT64を使って32ビットと64ビットを一貫して扱います。

<Component Id="RegistryAppPathsFoxit64" Guid="{FD5740AC-FE2C-4043-926B-DCE7422D77AE}"> 
    <Condition>VersionNT64</Condition> 
    <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FoxitReader.exe" Action="createAndRemoveOnUninstall"> 
    <RegistryValue Type="string" Value="C:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe" /> 
    </RegistryKey> 
</Component> 

<Component Id="RegistryAppPathsFoxit32" Guid="{7E78E125-CF56-46FC-BAF5-00B748052153}"> 
    <Condition>NOT VersionNT64</Condition> 
    <RegistryKey Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FoxitReader.exe" Action="createAndRemoveOnUninstall"> 
    <RegistryValue Type="string" Value="C:\Program Files\Foxit Software\Foxit Reader\Foxit Reader.exe" /> 
    </RegistryKey> 
</Component> 
関連する問題