我对 WiX 完全陌生,所以我使用 WiX 的第一个任务当然是将现有的大型安装程序从 WiX 2 迁移到 WiX 3。我有很多皱纹,其中大部分都已整理,但我将不胜感激对于以下轻微错误的一些建议。由于我是 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 和 re-greped,但唯一的参考如下:
在 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,如果我将 ref 更改为 WixUI 或将 ref 更改为 LicenseAgreementDlg,重复错误就会消失,但我会得到符号未找到链接错误。我使用 WixCop 迁移了原始的 wxs 文件,但在 WiX 2 下它们都按原样工作。我猜这与将 WiXUI 放在 WiX 3 中自己的命名空间中的举动有关,但坦率地说,我什至不知道该尝试什么。
关于事情哪里出了问题的任何想法?
谢谢,
亚当