我想创建一个自定义对话框,它安排在欢迎对话框之前。自定义对话框有一个位图控件,一些文本控件和两个取消按钮(SpawnDialog-> CancelDlg)和下一个(NewDialog-> WelcomeDlg)。没有花哨的自定义操作或设置属性。如何在welcomeDlg之前插入一个自定义对话框,而不会搞乱UI-Sequence
- 维克斯版本:3.8
- 使用WixUI_InstallDir.wxs
我已经发现了以下问题:How can I insert custom dialog before WelcomeDlg? 虽然其标记为回答,提问者得到相同的错误消息(见注释)作为我使用该答案的解决方案。所以请不要把这个标记为重复。
下面的代码(从customDialog.wxs,与dialogRef在WixUi_InstallDir.wxs)不建,以及自定义对话框中显示为第一个对话框,...
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<UI>
<Dialog Id="CustomDlg" Width="370" Height="270" Title="[ProductName] - Setup">
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
<Publish Event="NewDialog" Value="WelcomeDlg">1</Publish>
</Control>
<Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" Disabled="yes"/>
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
<!-- ... More Controls ... -->
</Dialog>
<InstallUISequence>
<Show Dialog="CustomDlg" After="CostFinalize">NOT Installed OR PATCH</Show>
</InstallUISequence>
</UI>
</Fragment>
</Wix>
...但UI - 次序完全搞砸:
customDlg - > welcomeDlg - > verifyDlg - > welcomeDlg - > verifyDlg - > progressDlg ...
那么点击 “安装” 按钮上造成跳回到欢迎对话框。在第二个“转向”中,单击安装按钮具有触发安装的预期效果:-P
我尝试在@Before,@After或@Sequence的不同位置安排我的自定义对话框(我使用Orca看看UISequence),甚至建立我自己的WelcomeDlg(如下所述:http://neilsleightholm.blogspot.de/2008/08/customised-uis-for-wix.html)。我在WelcomeDlg中将InstallUISequence-Element搞乱了,就像在自定义对话框之后安排它一样。 但是(意外的惊喜)@ After =“CustomDlg”与自定义对话框中的@ Before =“WelcomeDlg”具有相同的效果,再次搞乱UI序列。
我想到了导致这个混乱的用户帐户控制,但是UAC应该如何退出MSI的ui序列呢?对我没有意义。无论如何,我试图运行MSI管理-CMD什么应该抑制任何提示的UAC时按下安装按钮。但仍然一样搞砸了UI序列。
在此先感谢您的帮助。
感谢您的快速回答克里斯托弗。你真的清除了我的UI序列的行为。无论如何,我想要放置的对话将是一种“化妆”功能。正如你所指出的那样,不值得工作,也不是一个很好的锻炼,所以我只是改变了欢迎对话框以适应我的需求。 – Sepelio