从Wix 2迁移到Wix 3:重复的符号



我是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或将其完全删除并使用内置的一个。

最新更新