对话框之间插入自定义操作(InstallUISequence)在维克斯(Inserting Cust

2019-09-01 17:32发布

我有两个自定义对话框(加上所需的项目ExitDlgFatalErrorDlg等),第一个设置使用Edit控件的属性,第二个显示了使用文本控件这个属性。 这里是有意义的代码:

<Dialog Id="DialogA" ...>
  <Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
  <Control Id="ControlNext" Type="PushButton" ...>
    <Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>

然后第二个对话框:

<Dialog Id="DialogB" ...>
  <Control Id="ControlText" Type="Text" Text="[MY_PROPERTY]" .../>
  <Control Id="ControlBack" Type="PushButton" ...>
    <Publish Event="EndDialog" Value="Return" /></Control>
  <Control Id="ControlNext" Type="PushButton" ...>
    <Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>

动作时序:

<InstallUISequence>
   <Show Dialog="DialogA" Before="MyCustomAction" />
   <Custom Action="MyCustomAction" Before="DialogB" />
   <Show Dialog="DialogB" Before="ExecuteAction" />
</InstallUISequence>

自定义操作改变的值MY_PROPERTY 。 我的问题是如何在后退按钮DialogB回到DialogA 。 使用NewDialog很简单,但我不能让对话框之间要执行的自定义操作,或可以吗?


编辑- 2013年5月2日

从@caveman_dick答案后,我试图改变DialogA几乎就像他说的,但不是使用EndDialog ,我改Action="NewDialog" Value="DialogB" 。 但现在的自定义操作不会被调用。 如果删除了发布活动转到下一个对话框,然后在CA被调用。 如果我离开的@caveman_dick说,我不能回去DialogADialogB


编辑- 2013年5月2日

图书搜索的WiX 3.6之后:开发人员指南到Windows Installer XML,我发现了以下内容:“如果你有一个以上的发布活动,它们必须具有的条件语句作为自己内心的文字,否则,所有的事件根本不会予以公布。”

所以从@caveman_dick的答案是正确的,但您需要更改为以下:

<Publish ...>1</Publish>

Answer 1:

而不是安排在自定义操作InstallUISequence你可以发布它的按钮点击:

<Dialog Id="DialogA" ...>
   <Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
   <Control Id="ControlNext" Type="PushButton" ...>
       <Publish Event="DoAction" Value="MyCustomAction">1</Publish>
       <Publish Event="EndDialog" Value="Return">1</Publish>
   </Control>
</Dialog>

编辑: Publish元素的病情需要明确地评价为真运行,故加"1"作为文本Publish的元素。



文章来源: Inserting Custom Action between Dialogs (InstallUISequence) in WiX