我是Wix的新手,所以我对Wix的第一个任务是将现有的大型安装程序从Wix 2迁移到Wix 2。其中已经分类了,但是我会感谢一些建议的建议。由于我是Wix的新手,所以我想列出我的整个过程:
创建一个Wix库:
candle.exe *.wxs
lit.exe -out "wixui_company.wixlib" *.wixobj
生成主要MSI:
candle.exe main.wxs -o main.wixobj
light.exe main.wixobj -o Main_Installer.msi wixui_company.wixlib -ext WixUIExtension
最后一个命令给出了数十个错误,但它们都采用以下表格
error LGHT0091 : Duplicate symbol 'Dialog:LicenseAgreementDlg' found.
我有grep并重新绿化,但唯一的参考文献是:
在licenseagreementdlg.wxs中:
<Fragment>
<UI>
<Dialog Id="LicenseAgreementDlg" ...
和wixui_company.wxs
<Fragment>
<UI Id="WixUI">
<DialogRef Id="LicenseAgreementDlg" />
...
<Property Id="WixUI_WelcomeDlg_Next" Value="LicenseAgreementDlg" />
是DialogRef线路出现错误。
这些都从main.wxs中的wixui_company.wixlib中引用:
<UIRef Id="WixUI" />
fwiw,如果我将参考文献更改为wixui或ref cud to licenseagreementdlg,则重复错误会消失,但是我找不到符号找到链接错误。我使用WixCop迁移了原始的WXS文件,但是在Wix 2下,它们都按原样工作。我猜这与将Wixui放在Wix 3中的名称空间中有关的举动,但坦率地说,我什至不知道该怎么做。
关于事情发生可怕的错误的想法?
谢谢,
亚当
" licenseagreementdlg"是您使用 light.exe
链接到的wixuiextension中对话框的名称。MSI数据库中的每个对话框都必须具有唯一的标识符,因此您很可能已经将<UIRef>
元素用于标准Wix UI之一(" Wixui_featuretree"," Wixui_mondo"等),其中包括WIX的LICENSEAGENSEAGENSEAGREEEMTDLG DILOG。然后,您是引用自己的Licenseagreementdlg,所以现在有两个对话框。
在这种情况下,您需要重命名自己的licenseagreementdlg或将其完全删除并使用内置的一个。