当我尝试编译我的 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.
现在奇怪的是,这两个组件属于两个不同的合并模块,DPOTDotNet.msm 和 DPOTShrDotNet.msm。在 Orca 中查看时,有问题的两个组件 DPFPShrNet(它是 DPOTShrDotNet.msm 的一部分)有一个与之关联的同名 dll(如文件表中所示的 DPFPShrNet.dll),而 DPFPShrXTypeLibNet 也有一个 dll与它关联的同名 (DPFPShrXTypeNet.dll)。正如错误所说,我没有看到两个 DPFPShrNet.dll 正在安装。
我们正在从 InstallShield 迁移到 WiX,InstallShield ism 文件引用了这两个合并模块,并且它们都使用该方法正确安装。WiX认为正在安装两个同名文件是否有某些原因?一旦我从我的项目中删除 DpOTShrDotNet.msm,它就会正确编译,但我在安装后在 GAC 中丢失了 DPFPShrNet.dll。