WIX:重复符号'属性:WixUI_Mode'发现,自定义对话框创建

时间:2017-10-16 09:36:02

标签: wix3.11

我有Wix工具集和VS2017的3.14版以及以下问题...... 当我尝试使用预定义的WixUI_Minimal获取我自己的对话框顺序时。同样的问题出现在3.11工具集

  1. 步骤在VS2017中创建Wix项目
  2. .\wix3-develop\wix3-develop\src\ext\UIExtension\wixlib
  3. 复制WixUI_Minimal.wxs
  4. 将文件WixUI_Minimal.wxs重命名为Custom_Minimal.wxs并包含到项目中
  5. Custom_Minimal.wxs中的更改:

    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Fragment> <UI Id="Custom_Minimal">

  6. 将Custom_Minimal ref添加到Product.wxs:

    <Product Id="398c09df-6b61-4b0b-bf18-075a0bb98300" Name="SetupProject2" Language="1033" Version="1.0.0.0" Manufacturer="STH" UpgradeCode="524cff23-7bce-4078-9fb9-51b2eb7a844c"> <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> <UIRef Id="Custom_Minimal" />

  7. 尝试构建但很多错误:

    Severity Code Description Project File Line Suppression State Error Duplicate symbol 'Property:WixUI_Mode' found. This typically means that an Id is duplicated. Check to make sure all your identifiers of a given type (File, Component, Feature) are unique. SetupProject3 C:\Users\...\source\repos\MtPubSubExample-mt3\SetupProject3\Custom_Minimal.wxs 28

  8. 和更多类似......

    任何人都知道为什么会这样吗?

3 个答案:

答案 0 :(得分:3)

我知道这已经过时了但是我遇到了同样的问题并且非常令人沮丧。

似乎在您的自定义用户界面中包含相同的<InstallUISequence>并使用Wix定义的对话框会以某种方式引入其中一个具有相同对话框的<InstallUISequence>的用户界面。< / p>

在WixUI_Minimal的情况下你可能有

<InstallUISequence>
     <Show Dialog="WelcomeDlg" Before="WelcomeEulaDlg">Installed AND PATCH</Show>
     <Show Dialog="WelcomeEulaDlg" Before="ProgressDlg">NOT Installed</Show>
</InstallUISequence>

包含在您的自定义UI wxs中。您可以通过定义自己的WelcomeDlg和WelcomeEulaDlg(带有修改后的名称)来解决这个问题,并使用它们而不是wix版本。

或者您可以从用户界面中删除<InstallUISequence>。我想我可能要添加一个订单,但似乎已经使用了#34; WelcomeDlg&#34;首先,只需删除<InstallUISequence>即可。我只需更新新窗口的发布事件,以便在单击下一个/后退时正确转到下一个对话框。

答案 1 :(得分:0)

Minimal主题也有问题,请尝试不带有InstallUISequence标志且易于修改的WixUI_InstallDir

答案 2 :(得分:0)

我也有此错误。由于与InstallUISequence发生冲突而发生。如果您有相同的规则,请尝试更改条件。

例如: 我有:

<Show Dialog="WelcomeDlgCustom" Before="MyDlg" Overridable="yes">(NOT Installed AND NOT PREVIOUS_VERSION) OR PATCH</Show>

在同一wxs文件中,我有:

<Publish Dialog="DbUpgradeWarningDlg" Control="Back" Event="NewDialog" Value="WelcomeDlgCustom">1</Publish>

所以我只是添加一些条件来打破碰撞并添加了Order =“ 1”,我将其更改为:

<Publish Dialog="DbUpgradeWarningDlg" Control="Back" Event="NewDialog"
> Value="WelcomeDlgCustom" Order="1">PATCH AND BUILD</Publish>