Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix 将发布事件与控件分开_Wix_Wix3.5 - Fatal编程技术网

Wix 将发布事件与控件分开

Wix 将发布事件与控件分开,wix,wix3.5,Wix,Wix3.5,我有一个UI对话框,它在几个WiX项目中很常见 但根据项目的不同,该常用UI之前(后面)或之后(后面)的对话框可能不同。 为了避免代码重复,我希望在每个WiX项目中单独定义公共对话框(没有发布事件)和该UI的发布事件 是否可能以及如何做到这一点?,您可以在src\ext\uiextension\wixlib下查看wix源代码。您会注意到,所有对话框都在它们自己的文件中,UI集是分开的 例如,在WixUI_Mondo.wxs中,您有DialogRef标记来导入对话框,还有一堆Publish标记来重

我有一个UI对话框,它在几个WiX项目中很常见

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

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

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

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

您的UI看起来像:

<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>

条件
1.
在对话框的文件中:

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

您也可以在项目中使用。因此,如果您的对话框总是调用一个自定义操作,或者显示在另一个操作之前,那么您最好将其放在该文件中

您可以下载源代码