セットアップ プロジェクトの最後に実行可能ファイルを実行するにはどうすればよいですか?
-
09-06-2019 - |
質問
かなり単純な WinForms アプリケーションをインストールするために使用する Visual Studio セットアップ プロジェクトがあります。インストールの最後には、アプリケーションを実行するかどうかをユーザーに尋ねる 1 つのチェック ボックスを表示するカスタム ユーザー インターフェイス ページが表示されます。他のインストーラーがこれを頻繁に行っているのを見てきました。しかし、インストール完了後にセットアップ プロジェクトで実行可能ファイルを実行する方法が見つかりません。アイデア?
注記:カスタム アクションはインストール プロセスの一部として使用されるため、使用できません。ユーザーがインストールの最後に [閉じる] ボタンを押したら、インストールしたアプリケーションを実行したいと考えています。
解決
これが Visual Studio インストール プロジェクトの本当の制限の 1 つであると私は考えています。インストール UI の最後のページを変更できる必要がありますが、VS.NET にはこれを行う方法がありません。.MSI のビルド後にテーブルを変更することはできますが、VS.NET はビルドされるたびにこれらの変更を上書きする可能性があります。インストール プロジェクトに含めるマージ モジュールを使用して、最後のページをオーバーライドできる場合があります。いずれの場合でも、UI ダイアログが .MSI でどのように作成されるかを理解する必要があり、これは簡単ではありません。
無料のスクリプト ベースのインストーラーに切り替えるか、商用のセットアップ オーサリング アプリケーションを購入することを検討することをお勧めします (Pete を愛するために InstallShield を購入しないでください)。InstallAware を見てみましょう (私は使用したことがありませんが)。
他のヒント
カスタムアクションを使用することもできます
外部ツールを必要としない非常に簡単な方法を見つけました。クラス ファイルをメイン プロジェクトに追加し、カスタム アクションをセットアップ プロジェクトに追加するだけです。
内部アプリに対してこれを行うには、セットアップ実行可能ファイルを起動し、それが閉じるのを待ってから 2 番目のプログラムを起動する VB スクリプト ハーネスを作成します。
C 実行可能ファイルでいくつかの Win API 呼び出しを使用して、もう少し洗練してこれを実現することもできます。
MSILAUNCH を使用することもできます (ただし、私は MSICREATE でしか動作しませんでした)。
次の行を使用してアセンブリの Main メソッドを呼び出すことで、これを管理しました。
(typeof(ClassWithinAssemblyToExecute)).Assembly.EntryPoint.Invoke(null, new Object[] {} )
カスタムインストーラーで実行できます。インストーラークラスを追加するだけで、インストール後、インストール前などの多くのイベントが表示されます。インストール後に接続するだけで、そこからプロセスクラスによってexeを実行できます。カスタム インストーラーについて詳しく調べるには、Google で検索することをお勧めします。ここに役立つかもしれないリンクが 1 つあります http://www.codeproject.com/Articles/19560/Launching-Your-Application-After-Install-using-Vis
ありがとう