我想创建一个自定义对话框,安排在欢迎对话框之前。自定义对话框有一个位图控件、一些文本控件和两个用于取消 (SpawnDialog->CancelDlg) 和下一步 (NewDialog->WelcomeDlg) 的按钮。没有花哨的自定义操作或设置属性。
- 蜡版本:3.8
- 使用 WixUI_InstallDir.wxs
我已经找到了以下问题:如何在 WelcomeDlg 之前插入自定义对话框? 尽管它被标记为已回答,但提问者会收到与我使用该答案的解决方案相同的错误消息(请参阅评论)。所以请不要将此标记为重复。
以下代码(来自 customDialog.wxs,在 WixUi_InstallDir.wxs 中带有 dialogRef)确实构建了,并且自定义对话框显示为第一个对话框,...
<?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/customized-uis-for-wix.html )。我弄乱了 WelcomeDlg 中的 InstallUISequence-Element,比如在自定义对话框之后安排它。但是(惊喜)@After="CustomDlg" 与自定义对话框中的@Before="WelcomeDlg" 具有相同的效果,再次弄乱了 UI 序列。
我考虑过用户帐户控制会导致混乱,但是 UAC 应该怎么做才能退回 MSI 的 ui 序列?对我来说毫无意义。无论如何,我尝试通过 admin-Cmd 运行 MSI,点击安装按钮时应该抑制 UAC 的任何提示。但仍然是同样混乱的 UI 序列。
提前感谢您的帮助。