2

我想修改自定义对话框,所以我创建了一个。但我想在 mondo UI 中的欢迎对话框之后显示这个自定义对话框。

如果我这样做:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomizeDlg">1</Publish>
<Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">1</Publish>
<Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="CustomCustomizeDlg" Order="4">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="4">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomCustomizeDlg" Order="4">1</Publish>

那么一切正常......但如果我做这样的事情:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="CustomCustomizeDlg">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">1</Publish>
<Publish Dialog="CustomCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomCustomizeDlg" Order="4">1</Publish>

然后没有显示任何自定义对话框,而是在欢迎后显示许可证对话框...

我根本没有明白...这种行为对我来说很奇怪...有什么想法吗?

编辑:

我只是发现在 msi DB 中,在 WelcomeDlg 上为 CustomCustomizeDlg 注册了控制事件,也为 LicenseDialog 注册了控制事件,并且都为 1 ......如果我删除 licenseDialog 的行它工作正常,所以现在我的问题是如何删除该行而不使用逆戟鲸...

4

1 回答 1

1

您不需要删除它,只需添加顺序大于 1 的控制事件(请尝试 10 左右以确保),它将优先。

当多个 NewDialog 是要打开的候选者时,只会选择具有最大订单号的那个。您可以在此处此处找到已回答的类似问题。

此外,您可以在MSDN ControlEvent 表文档中阅读有关事件排序的信息:

需要注意的例外是每个控件最多可以发布一个 NewDialog 或一个 SpawnDialog 事件。如果您需要在此表中创作多个 NewDialog 和 SpawnDialog 控件事件,还应在 Condition 字段中包含条件语句,以确保最多发布一个事件。如果为同一个控件选择了多个 NewDialog 和 SpawnDialog 控件事件,则在激活控件时仅发布 Ordering 列中具有最大值的事件。

于 2013-09-30T16:02:56.847 回答