5

.Net3.5または.Net4.0のいずれかでコンパイルされたdllがあります。(同じ名前です)
wixには、2つの条件付き機能があります。
機能AはComponentRefId="Cmp35"を使用してアプリの.net3.5dllを
インストールします機能BはComponentRefId="Cmp40"を使用して.net4.0dllをインストールし
ます機能は相互に排他的であり、1つの機能のみがインストールされます。

私のコンポーネント:

<?xml version="1.0" encoding="UTF-8"?>  
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">  
    <Fragment>  
        <DirectoryRef Id="INSTALLDIR">  
            <Component Id="Cmp35" Guid="..">  
                <File Id="Behaviors.Assembly" Name="$(var.Behaviors.v3.5.gen.TargetFileName)" Source="$(var.Behaviors.v3.5.gen.TargetPath)" />  
               <File Id="Other.Assembly" Name="$(var.Other.v3.5.gen.TargetFileName)" Source="$(var.Other.v3.5.gen.TargetPath)" />  
           </Component>  
           <Component Id="Cmp40" Guid="...">  
               <File Id="Behaviors.Assembly.4.0" Name="$(var.Behaviors.v4.0.gen.TargetFileName)" Source="$(var.Behaviors.v4.0.gen.TargetPath)" />  
               <File Id="Other.Assembly.4.0" Name="$(var.Other.v4.0.gen.TargetFileName)" Source="$(var.Other.v4.0.gen.TargetPath)" />  
           </Component>  
       </DirectoryRef>  
    </Fragment>  
</Wix>

コンパイル中にエラーが発生しました:エラーLGHT0204:ICE30:ターゲットファイル...がLFNシステムの2つの異なるコンポーネントによって...にインストールされています:
ファイル名が同じであるため、問題があるようです...
ですこれを管理する方法はありますか?ありがとう!

4

2 に答える 2

8

これらはICE30からの単なる警告です。コンポーネントが本当に相互に排他的であることを確認した場合は、指示どおりに実行したため、警告を無視できます。:)

于 2013-03-20T17:27:41.283 に答える
5

私は通常、ファイルを別のサブディレクトリにインストールし、CopyFile要素(DuplicateFileテーブル)を使用してファイルを目的のディレクトリに複製することで、ICE30の警告を回避します。これは、機能またはコンポーネントが相互に排他的であり、ICEを静かにしたい場合にうまく機能します。

于 2013-03-20T16:50:23.287 に答える