Wix 使用两个合并模块编译时使用ICE30
当我试图编译我的WiX安装程序项目时,我收到了ICE30。完全错误如下:Wix 使用两个合并模块编译时使用ICE30,wix,merge-module,internal-compiler-error,Wix,Merge Module,Internal Compiler Error,当我试图编译我的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 'DP
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。ICE是验证(单元测试)而不是编译。一些ICE已知存在缺陷/设计缺陷。你应该可以忽略这个。第三方合并模块可能会出现问题,因此您可能需要为这些组件寻找exe/msi redist安装程序。另一种可能是将这些MSM封装到他们自己的MSI中,并使用WiX burn chainer将其链接在一起。这为风险提供了一些隔离/防火墙/缓解措施。是的,我最终抑制了这些警告,并且安装得很好。不幸的是,将它们包装在MSI中并使用burn不是一个选项。谢谢你的意见。