ウェルカム ダイアログの前にスケジュールされたカスタム ダイアログを作成したいと考えています。カスタム ダイアログには、ビットマップ コントロール、いくつかのテキスト コントロール、およびキャンセル (SpawnDialog->CancelDlg) と次へ (NewDialog->WelcomeDlg) の 2 つのボタンがあります。派手なカスタム アクションやプロパティの設定はありません。
- Wix バージョン: 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 ...
したがって、「インストール」ボタンをクリックすると、ようこそダイアログに戻ります。2 番目の「ターン」では、インストール ボタンをクリックすると、インストールがトリガーされるという望ましい効果があります :-P
@Before、@After、または @Sequence (UISequence を確認するために Orca を使用) のいずれかを使用して、さまざまな場所でカスタム ダイアログをスケジュールし、独自の WelcomeDlg を作成しようとしました (ここで説明されているように: http://neilsleightholm.blogspot. de/2008/08/customized-uis-for-wix.html )。カスタム ダイアログの後にスケジュールするなど、WelcomeDlg の InstallUISequence-Element をいじりました。しかし (驚いたことに) @After="CustomDlg" は、カスタム ダイアログで @Before="WelcomeDlg" と同じ効果を持ち、UI シーケンスを再び混乱させます。
ユーザー アカウント制御がその混乱を引き起こしていると考えましたが、UAC は MSI の ui-sequence に戻るために何をすべきでしょうか? 私には意味がありません。とにかく、インストールボタンを押したときにUACのプロンプトを抑制する必要があるadmin-CmdでMSIを実行してみました。しかし、それでも同じめちゃくちゃな UI シーケンスです。
助けてくれてありがとう。