从控件中分离发布事件

时间:2013-03-19 22:04:22

标签: wix wix3.5

我有一个UI对话框,这是几个WiX项目的共同点。

但是根据项目,普通用户界面之前(后退)或之后(下一步)的对话可能不同 为了避免代码重复,我希望在每个WiX项目中单独使用公共对话框(没有发布事件)和该UI的发布事件。

是否有可能以及如何做到这一点?

1 个答案:

答案 0 :(得分:2)

Yes it is,您可以查看src\ext\uiextension\wixlib下的wix源代码。您会注意到所有对话框都在他们自己的文件中,并且UI集是分开的。

例如,在WixUI_Mondo.wxs中,您有DialogRef个标签来导入对话框和一堆Publish标签来重新排序序列。例如,在InstallDirDlg中,有控件,旁边没有Publish个标签。

您的用户界面看起来像:

<UI Id="MyUI">
    <DialogRef="WelcomeDlg"/>
    <DialogRef="InstallDirDlg"/>

    <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">CONDITION</Publish>
    <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
</UI>

在对话框的文件中:

<UI>
    <Dialog Id="WelcomeDlg" Width="370" Height="270" Title="Welcome">
        <Control ... />
    </Dialog>
</UI>

您的项目中也可以有multiple InstallUISequence tags。因此,如果您的对话框始终调用自定义操作,或者显示在另一个操作系统之前,您也可以将其放在该文件中。

您可以下载源代码here