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 がありません。