1

我有几个 WiX 项目通用的 UI 对话框。

但是根据项目的不同,常见的 UI 之前(Back)或之后(Next)的对话框可能会有所不同。
为了避免代码重复,我希望单独使用通用对话框(没有发布事件)和每个 WiX 项目中定义的 UI 的发布事件。

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

4

1 回答 1

2

是的,你可以看看下面的 wix 源代码src\ext\uiextension\wixlib。您会注意到所有对话框都在它们自己的文件中,并且 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>

您的项目中也可以有多个InstallUISequence标签。因此,如果您的对话框将始终调用自定义操作,或者显示在另一个之前,您不妨将它放在该文件中。

你可以在这里下载源代码

于 2013-03-19T23:31:46.583 回答