環境
.NET6
Visual Studio 2022
Microsoft Visual Studio Installer Projects 2022
はじめに
どうも、水無月せきなです。
長らく開発しているVRCToolBoxの配布を、インストーラ(.msi)で行っています。
インストーラ実行後はEXEが起動する(あるいはオプションで起動できるようになっている)アプリケーションが多いと思いますが、Installer Projectsで作成する場合はちょっとひと手間が要ります。
インストーラプロジェクトの設定などを実際にしたのはだいぶ前なので、忘れている部分もありますが、適宜思い出しつつ、備忘録的に記したいと思います。
手順
1. インストーラ作成準備
インストーラを作成できるように準備します。
今回の本題ではないので、以下の記事などを参考に準備してください。
Visual Studio 2022でアプリケーションのインストーラーを作成する
Visual Studio Installer Projects 拡張機能 と .NET 6.0
※注意点として、.NET(Core系列)の場合は、インストーラに含めるプロジェクト出力は「項目の公開(英語版だと Publish Items)」です。.NET Framework の場合とは異なります。
2. Orca の準備
作成したインストーラ(.msi)を編集するため、Orca というソフトが必要になります。
以下の記事などを参考にOrcaをインストールしてください。
Windows SDK が入っていれば、Orca のインストーラもある可能性が高いです。私の場合は下記にありました({Windowsのバージョン}は適宜置き換えてください)。
C:\Program Files (x86)\Windows Kits\10\bin\{Windowsのバージョン}\x86
以降は、Oraca をインストール済みとして話を進めます。
3. インストーラを Orca で開く
インストーラプロジェクトをビルド後、.msi ファイルを右クリック → Edit With Orca
を選択して、Orca で .msi を開きます。
4. exe の File ID を探し出す
Tables
の File
を選択し、exe の行を探します。その行の File
列のセルを右クリック → Copy Cell
でコピーします。
5. カスタムアクションを定義する
Tables
の Custom Action
を選択し、空いているスペースをダブルクリックします。
すると、アクションを追加する画面が開くので、下記のように入力します。
Action:LaunchApp
Type:210
Source:さっきコピーした File ID
Target:空白
6. インストーラ終了時にカスタムアクションを実行するように設定する
-
Tables
のControl Event
を選択し、FinishedForm
の行を探します。その行を右クリック →Copy Row(s)
でコピーします。その後、右クリック →Paste Row(s)
で貼り付けます。 -
今貼り付けた行の
Dialog
列がFinishedForm0
のようになっているはずなので、その行を探し出します(たぶん最下行にあるはず)。 -
セルをダブルクリックすると編集できるようになるので、下記のように値を変更します。
Event:DoAction
Argument:LaunchApp
最後に、Dialog
をFinishedForm
に変更します。 -
元の
FinishedForm
の行のOrder
を1
に変更します。
7. 変更を保存する
左上の保存マーク、もしくは File
→ Save
などで保存します。
8. インストーラを実行する
インストール後、アプリが起動するようになったはずです。
参考
インストール終了後にアプリケーションを起動するか選択できるようにする - dobon.net
VBS を使う方法で紹介されています(し、初期は私もVBSでやってましたが……)。ただ、VBS はセキュリティで止まるかもとか言うのをネットで見た気がするので、直起動が良いかも? と思って今回の方法に至りました。