我想修改自定义对话框,所以我创建了一个。但我想在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的行它工作正常,所以现在我的问题是如何删除没有使用逆戟鲸的那一行...
答案 0 :(得分:1)
您不需要删除它,只需添加一个大于1的控制事件(请确保10左右),它将优先。
当多个NewDialog是要打开的候选者时,将只选择具有最大订单号的那个。您可以在here或here找到类似的问题。
此外,您可以阅读MSDN ControlEvent table documentation中的事件排序:
需要注意的例外是每个控件都可以发布最多的一个NewDialog或一个SpawnDialog事件。如果您需要在此表中创建多个NewDialog和SpawnDialog控件事件,还要在Condition字段中包含条件语句,以确保最多发布一个事件。如果为同一控件选择了多个NewDialog和SpawnDialog控件事件,则只有在激活控件时才会发布Ordering列中具有最大值的事件。