1

複数の WiX プロジェクトに共通する UI ダイアログがあります。

ただし、プロジェクトによっては、その共通 UI の前 (Back) または後 (Next) のダイアログが異なる場合があります。
コードの重複を避けるために、共通ダイアログのみ (パブリッシュ イベントなし) と、各 WiX プロジェクトでその UI のパブリッシュ イベントを定義したいと考えています。

それは可能ですか、どうすればこれを行うことができますか?

4

1 に答える 1

2

はい、そうです。の下にある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タグを含めることもできます。したがって、ダイアログが常にカスタムアクションを呼び出す場合、または別のアクションの前に表示される場合は、そのファイルに配置することをお勧めします。

ここからソースコードをダウンロードできます

于 2013-03-19T23:31:46.583 に答える