0

WiX インストーラー プロジェクトをコンパイルしようとすると、ICE30 を受け取ります。完全なエラーは以下のとおりです。

 ICE30: The target file 'DPFPSH~1.DLL|DPFPShrNET.dll' is installed in         
'[TARGETDIR]\Windows\DPDrv\' by two different components on an SFN system: 
'DPFPShrNET.DA2BFC77_FAFE_41D1_8BB6_134232B2EADC' and 
'DPFPShrXTypeLibNET.51D3E534_F1F9_4BC6_BFC5_B27F733081C7'. This breaks component reference
 counting.

ここで奇妙なのは、これら 2 つのコンポーネントが、DPOTDotNet.msm と DPOTShrDotNet.msm という 2 つの異なるマージ モジュールに属していることです。問題の 2 つのコンポーネントである DPFPShrNet (DPOTShrDotNet.msm の一部) を Orca で表示すると、それに関連付けられた同じ名前の dll (ファイル テーブルにある DPFPShrNet.dll) があり、DPFPShrXTypeLibNet にも 1 つの dll があります。それに関連付けられた同じ名前の (DPFPShrXTypeNet.dll)。エラーが示すように、2 つの DPFPShrNet.dll がインストールされていません。

私たちは InstallShield から WiX に移行しており、InstallShield ism ファイルはこれら 2 つのマージ モジュールを参照しており、両方ともその方法を使用して正しくインストールされます。同じ名前の 2 つのファイルがインストールされていると WiX が判断する理由はありますか? プロジェクトから DpOTShrDotNet.msm を削除するとすぐに正しくコンパイルされますが、インストール後に GAC に DPFPShrNet.dll がありません。

4

1 に答える 1

1

ICE は検証 (単体テスト) であり、コンパイルではありません。一部の ICE には、バグや設計不足があることが知られています。これは無視できるはずです。ただし、サードパーティのマージ モジュールには問題がある可能性があるため、代わりにこれらのコンポーネントの exe/msi redist インストーラーを探すことをお勧めします。もう 1 つの可能性は、これらの MSM を独自の MSI にラップし、WiX バーン チェイナーを使用してすべてをリンクすることです。これにより、リスクの分離/ファイアウォール/軽減が提供されます。

于 2014-01-22T23:02:52.220 に答える