カスタム インストーラ アクション中に UI を表示する正しい方法は何ですか?
UI をインストール ダイアログでモーダルにしたい、またはカスタム アクションからのテキスト/進行状況をインストーラーのディスログに表示したい。
インストーラーは VS2005 セットアップ プロジェクトであり、カスタム アクションは C# インストーラー派生クラスです。
カスタム インストーラ アクション中に UI を表示する正しい方法は何ですか?
UI をインストール ダイアログでモーダルにしたい、またはカスタム アクションからのテキスト/進行状況をインストーラーのディスログに表示したい。
インストーラーは VS2005 セットアップ プロジェクトであり、カスタム アクションは C# インストーラー派生クラスです。
非標準の UI を表示するには、UI ハンドラ オブジェクトを変更する必要があります。これは些細なことではなく、実装は MSI の作成に使用するツールキットに依存します。VS セットアップ プロジェクトでも可能かどうかはわかりません。
単純なステータス/進行状況メッセージを表示し、MSI ログにログを記録することは、カスタム アクションから行うのはそれほど難しくありませんが、少なくともWindows インストーラー XML (WiX) ツールセットを使用しなければ、この目的のために私自身が使用しています。
WiX でカスタム アクションを作成する場合、Microsoft.Deployment.WindowsInstaller.Session オブジェクトを介してアクティブなインストーラー セッションにアクセスできます。有効なログ操作を実行し、エンジンに関連付けられた UI ハンドラー オブジェクトに実行を委ねます) 関数など、他の多くの優れた機能があります。
現在、C# で既にカスタム アクションを作成している場合は、現在の環境で同様のものを見つけることができるかもしれません (私は VS.net インストーラー プロジェクトを使用したことがないため、それらがどのように機能するか正確にはわかりません --私は実際にこれらが管理されたカスタム アクションを作成できることに非常に驚いています...)。それ以外の場合は、カスタム アクションについて WiX を検討することを強くお勧めします。これらは、任意の MSI オーサリング環境で動作し、非常に柔軟です。