2014-01-22 56 views
0

當我嘗試編譯我的WiX安裝程序項目時,我收到ICE30。下面的完整的錯誤是:使用兩個合併模塊進行編譯時的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。

回答

1

ICE的驗證(單元測試)不編譯。已知一些ICE有缺陷/設計缺陷。你應該可以忽略這一個。第三方合併模塊可能會有問題,但您可能想要爲這些組件找一個exe/msi redist安裝程序。另一種可能性是將這些MSM封裝到自己的MSI中,並使用WiX刻錄鏈將它們鏈接在一起。這爲風險提供了一些分離/防火牆/緩解。

+0

是的,我結束了壓制這些警告,它安裝得很好。不幸的是,將它們包裝在MSI中並使用刻錄不是一種選擇。感謝您的輸入。 –