複数の WiX プロジェクトに共通する UI ダイアログがあります。
ただし、プロジェクトによっては、その共通 UI の前 (Back) または後 (Next) のダイアログが異なる場合があります。
コードの重複を避けるために、共通ダイアログのみ (パブリッシュ イベントなし) と、各 WiX プロジェクトでその UI のパブリッシュ イベントを定義したいと考えています。
それは可能ですか、どうすればこれを行うことができますか?
はい、そうです。の下にあるwixソースコードを見ることができますsrc\ext\uiextension\wixlib
。すべてのダイアログが独自のファイルにあり、UIセットが分離されていることに気付くでしょう。
たとえば、WixUI_Mondo.wxsにはDialogRef
、ダイアログをインポートするためのPublish
タグと、シーケンスを並べ替えるための一連のタグがあります。たとえば、InstallDirDlg
にはコントロールがあり、Publish
タグはありません。
UIは次のようになります。
<UI Id="MyUI">
<DialogRef="WelcomeDlg"/>
<DialogRef="InstallDirDlg"/>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">CONDITION</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
</UI>
そして、ダイアログのファイルで:
<UI>
<Dialog Id="WelcomeDlg" Width="370" Height="270" Title="Welcome">
<Control ... />
</Dialog>
</UI>
プロジェクトに複数のInstallUISequence
タグを含めることもできます。したがって、ダイアログが常にカスタムアクションを呼び出す場合、または別のアクションの前に表示される場合は、そのファイルに配置することをお勧めします。
ここからソースコードをダウンロードできます