1

私のwxsファイルの2つのコンポーネントタグは次のとおりです

<Component Id="Comp.Comp1" Guid="*" >
<Condition><![CDATA[VersionNT < 602]]></Condition>
<File Id="File1" Source="$(Dir1)\TestFile.dll" />
 </Component>

<Component Id="Comp.Comp2" Guid="*" >
<Condition><![CDATA[VersionNT >= 602]]></Condition>
<File Id="File2" Source="$(Dir2)\TestFile.dll" />
 </Component>

しかし、以下のようなエラーが発生します

ICE08: Component: Comp.Comp2 has a duplicate GUID: {2963D8E7-CBEC-50C8-AF4B-65E895FE3283}   

autogen guid 値「*」を指定したにもかかわらず、このエラーが発生する方法

ありがとう、

4

2 に答える 2

8

要素のスター GUIDComponentは、ファイルのターゲットの場所に基づいて安定した GUID を計算します。GUIDの安定性は、将来の更新 (特にパッチ適用) にとって不可欠です。多くの場合、うまく機能しますが、ファイルをまったく同じ場所に配置する相互に排他的なコンポーネントは 1 つではありません。この場合、少なくとも 1 つの を明示的に設定する必要がありますComponent/@Guid

上記の場合、次のことができます。

<Component Id="Comp.Comp1" Guid="*" >
    <Condition><![CDATA[VersionNT < 602]]></Condition>

    <File Id="File1" Source="$(Dir1)\TestFile.dll" />
</Component>

<Component Id="Comp.Comp2" Guid="PUT-GUID-HERE">
    <Condition><![CDATA[VersionNT >= 602]]></Condition>

    <File Id="File2" Source="$(Dir2)\TestFile.dll" />
</Component>

技術的に言えば、この場合、コンポーネントは相互に排他的であるため、ICE08 エラーを抑制することができますが、個人的には、ICE を抑制する前に上記を実行します。私見、最終的には異なるファイルが異なるGUIDを持つことが望ましいです。

于 2013-04-23T14:48:22.280 に答える
1

このスニペット ( Directory Elements) のコンテキストは表示されませんでしたが、同じファイル名を同じディレクトリに2回インストールしているようです。それはコンポーネントのルール違反です。「ソース」は異なりますが、条件は同じです: !VersionNT >= 602.

于 2013-04-23T14:01:54.137 に答える