Mar*_*los 7 installer windows-installer custom-action wix
我有两个自定义对话框(加上所需的项目ExitDlg,FatalErrorDlg等),第一个设置使用Edit控件的属性,第二个显示了使用文本控件这个属性.这是有意义的代码:
<Dialog Id="DialogA" ...>
<Control Id="ControlEdit" Type="Edit" Property="MY_PROPERTY" .../>
<Control Id="ControlNext" Type="PushButton" ...>
<Publish Event="EndDialog" Value="Return" /></Control>
</Dialog>
Run Code Online (Sandbox Code Playgroud)
然后是第二个对话框:
<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>
Run Code Online (Sandbox Code Playgroud)
动作顺序:
<InstallUISequence>
<Show Dialog="DialogA" Before="MyCustomAction" />
<Custom Action="MyCustomAction" Before="DialogB" />
<Show Dialog="DialogB" Before="ExecuteAction" />
</InstallUISequence>
Run Code Online (Sandbox Code Playgroud)
自定义操作会更改值MY_PROPERTY.我的问题是如何使返回按钮DialogB回来DialogA.使用NewDialog很简单,但是我无法在对话框之间执行自定义操作,或者我可以吗?
编辑 - 2013-05-02
在@caveman_dick的答案之后,我试图改变它DialogA几乎就像他说的那样,但是EndDialog我没有使用,而是改为Action="NewDialog" Value="DialogB".但现在没有调用自定义操作.如果我删除Publish事件以转到下一个对话框,则会调用CA. 如果我离开的@caveman_dick说,我不能回去DialogA的DialogB.
编辑 - 2013-05-02
在书中搜索WiX 3.6:Windows Installer XML开发人员指南后,我发现以下内容:"如果您有多个Publish事件,则必须将条件语句作为其内部文本.否则,所有事件都不会出版."
所以@caveman_dick的答案是正确的,除了您需要更改为以下内容:
<Publish ...>1</Publish>
Run Code Online (Sandbox Code Playgroud)
cav*_*ick 11
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>
Run Code Online (Sandbox Code Playgroud)
编辑:Publish元素的条件需要显式计算为true才能运行,因此添加"1"为Publish元素的文本.
| 归档时间: |
|
| 查看次数: |
11349 次 |
| 最近记录: |