我正在使用Wix3.11并试图自定义ExitDialog。对话框的源代码(wix3-wix31rtm.zip中的ExitDialog.wxs)用以下语句调度这个对话框:
<Show Dialog="ExitDialog" OnExit="success" Overridable="yes" />因此,我将该文件复制到本地目录为MyExitDialog.wxs,将对话框Id从ExitDialog重命名为MyExitDialog,并将此对话框调度为:
<Show Dialog="MyExitDialog" OnExit="success" />但是,当我运行灯时,我得到了以下错误:
MyExitDialog.wxs(37): error LGHT1050: The AdminUISequence table contains actions 'MyExitDialog' and 'ExitDialog' which both have the same sequence number -1. Please change the sequence number for one of these actions to avoid an ICE warning.
C:\build\work\eca3d12b\wix3\src\ext\UIExtension\wixlib\ExitDialog.wxs(29): error LGHT1051: The location of the action related to previous warning.我原以为MyExitDialog的show元素会覆盖原来的ExitDialog的show元素,但它不是那样工作的。
我是否误解了Overridable属性是如何工作的?还是,我看错了ExitDialog.wxs文件?
发布于 2017-09-22 20:35:43
你包括了一些东西
<UIRef Id="WixUI_Minimal"/>在你的安装中。您需要找到相关的UI文件(这里),并将该文件的内容复制到wix项目中的新wxs中。您可以将这个名称命名为"MyUI“或其他东西,还可以将<UI Id="...">标记中的Id从"WixUI_Minimal”更新到其他东西(例如)。
在您刚刚创建的新文件中,更新这一行
<Show Dialog="ExitDialog" OnExit="success" Overridable="yes" />至
<Show Dialog="MyExitDialog" OnExit="success" />现在,在您的<Product>更新中,该<UIRef>引用您的新UI。
WixUIExtension包含一个wixlib,包含UI和对话框的所有定义。您刚刚在项目中定义了一个新的退出对话框,但旧对话框仍然存在,并在WixUIExtension dll中定义。由于您仍然在使用旧的UIRef,所以它带来了与您定义的一个对话框一起的所有内容。这导致了对序列-1动作的双重定义。
可覆盖标记具有以下文本
如果“是”,则该对话框的顺序可能会被其他位置的排序所覆盖。
这意味着您可以重新定义对话框的顺序:
<Show Dialog="ExitDialog" Sequence="55" Overridable="yes"/>
(or Before="..." or After="..." or OnExit="...")并且不会获得任何重定义错误,因为它被标记为可重写。
根本问题是不能同时使用两个<Show>标记和OnExit="success"
https://stackoverflow.com/questions/46371904
复制相似问题