我们的产品使用visual studio 2008(.NET CLR版本v2.0.50727)进行构建,并使用wix工具集3.0.5210为我们的产品创建安装程序。我最近升级到visual studio 2015(.NET CLR版本) v4.0.30319)用于构建我们的产品。在构建之后,我使用相同的WixToolset(3.0.5210)来创建安装程序,但是我看到从light.exe抛出的以下错误
MakeMSIFromWIX Install \ Product \ NTX86 \ Product \ release \ Product \ Product.msi T:\ Build \ Install \ Wix \ NTX86 \ Product \ bin_EnvironmentWizard.wxs(6):error LGHT0130:主键'reg76DDE9DE58652D7858F9E6690F309CC8'重复在表'注册表'中。请删除其中一个条目或 重命名主键的一部分以避免冲突。
我发现此信息“如果密钥有默认值,则会发生冲突。删除默认值可解决错误”。据说这可能是加热工具中的一个错误。 链接:https://sourceforge.net/p/wix/bugs/747/
所以我升级了wixtoolset并尝试创建安装程序,但我看到了奇怪的链接错误。
MakeMSIFromWIX Install\Product\NTX86\Product\release\Product\Product.msi
E:\Build\Install\Wix\NTX86\Product\group_Client.wxs(12) : error LGHT0094 : Unresolved reference to symbol 'Component:Comp.SystemFolder.AddFlow4.ocx' in section 'Fragment:Frag.Client'.
E:\Build\Install\Wix\NTX86\Product\group_Client.wxs(13) : error LGHT0094 : Unresolved reference to symbol 'Component:Comp.SystemFolder.HFlow.ocx' in section 'Fragment:Frag.Client'.
E:\Build\Install\Wix\NTX86\Product\group_Client.wxs(19) : error LGHT0094 : Unresolved reference to symbol 'Component:Comp.SystemFolder.msstkprp.dll' in section 'Fragment:Frag.Client'.
E:\Build\Install\Wix\NTX86\Product\group_Client.wxs(148) : error LGHT0094 : Unresolved reference to symbol 'Component:Comp.Bin.DXFC_net.dll' in section 'Fragment:Frag.Client'.
E:\Build\Install\Wix\NTX86\Product\group_Client.wxs(150) : error LGHT0094 : Unresolved reference to symbol 'Component:Comp.Bin.ValNet.dll' in section 'Fragment:Frag.Client'.
E:\External\Wix\light.exe -nologo -spdb -sice:ICE03 -sice:ICE61 -ext E:\External\Wix\WixUtilExtension.dll -b Install\Product -out Install\Product\NTX86\Product\release\Product\Product.msi Install\Product\NTX86\Product\release\Product.wixobj Install\Wix\NTX86\Product\obj\Product.wix
中的内容
<?xml version="1.0" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment Id="Frag.Client">
<ComponentGroup Id="Group.Client">
<ComponentRef Id="Comp.Bin.boost_signalsvc140mt1_61.dll"/>
<ComponentRef Id="Comp.Bin.boost_regexvc140mt1_61.dll"/>
<ComponentRef Id="Comp.Bin.boost_threadvc140mt1_61.dll"/>
<ComponentRef Id="Comp.Bin.cximageu.dll"/>
<ComponentRef Id="Comp.Bin.oc1210asu.dll"/>
<ComponentRef Id="Comp.Bin.og1210asu.dll"/>
<ComponentRef Id="Comp.Bin.ov1210asu.dll"/>
<ComponentRef Id="Comp.SystemFolder.AddFlow4.ocx"/>
<ComponentRef Id="Comp.SystemFolder.HFlow.ocx"/>
<ComponentRef Id="Comp.Bin.Interop.SHDocVw.dll"/>
<ComponentRef Id="Comp.Bin.TXXFC_net.dll"/>
<ComponentRef Id="Comp.Bin.TFC_net.dll"/>
<ComponentRef Id="Comp.Bin.ValNet.dll"/>
</ComponentGroup>
</Fragment>
</Wix>
我是wix和msi的新手。有些人可以帮我解决这些链接错误。
我们使用jam Build工具构建,我们有使用Jam脚本编写的操作规则。
actions MakeMSIFromWIX bind PRODUCTWIXLIB
{
$(LIGHT) $(LIGHTOPT) -b $(SUBDIR) -out $(<) $(>) $(PRODUCTWIXLIB)
}