この記事を手に取っていただき、ありがとうございます。
なんちゃってエンジニア Mojatto です。
2024年始まって1発目の記事ですが、残念ながらメモ書き程度の内容となってしまうことを、どうかお許しください。
・・・誰に宛ててるんだろう。
最近は、仕事では少し xR から離れ、業務支援用のデスクトップアプリを作ることが多く、.NET自体や関連 UI フレームワークを勉強しています。その中でも今チャレンジしているのは、Form・WPFの後継的な位置づけ(だと思ってますがどうなんでしょう)にある、「WinUI 3」を扱ったツール作成です。
Windows FormやWPFと異なり、専用の UI デザイナーが IDE 側に現状ない(サポートされていない) ため、Xaml を直接記述する形で UI を作る形になるのですが、うまく思い通りの UI ができず四苦八苦している今日この頃です。
概要
このエントリでは、Visual Studio を用いて Windows 向けにインストーラパッケージを作成する場合に、インストールするプログラムをスタートアップに登録させるようにするための設定手順について説明します。
準備するもの
- Visual Studio を導入済みの開発環境
- 自作のデスクトップアプリプロジェクト
手順
※ ここで示す手順は、自作のデスクトップアプリが一通り開発できており、実行ファイルに書き出して動作確認ができていることを前提としています。
1. ソリューションに「インストーラープロジェクト」を追加する
はじめに、自作アプリのソリューションに「インストーラープロジェクト」なるものを追加します。
これは、作成したいインストーラーに含めるデータや、インストール時に追加したいファイル構造、レジストリなどを設定するためのものです。
インストーラープロジェクトの追加と諸々の設定方法については、overdrive1708 様の Zenn にある記事がわかりやすいかと思いますので、こちらを参照してください。
2. レジストリ設定を開きキーを追加する
ソリューションエクスプローラから新たに追加したインストーラプロジェクトを右クリックで選択し、「View > Registry」の順に選択します。

選択すると、テキストエディタが表示されていたセクションに、インストーラーが変更を加えるレジストリのキーが、レジストリエディタのような形式で表示されます。
この画面で、スタートアップ起動をさせるためのレジストリを登録していきます。
スタートアップ起動のレジストリの登録方法は、インストーラーを適用する対象ユーザの範囲によって異なります。
すべてのユーザに対してスタートアップを登録する場合
レジストリの構造上で、以下のようなパスにレジストリを登録する必要があります。HKEY_LOCAL_MACHINE / Software / Microsoft / Windows / CurrentVersion / Run
初期状態では、HKEY_LOCAL_MACHINE/Software
までしか階層がないため、残りの階層を自分で追加する必要があります。
階層を追加する場合は、追加したい階層で右クリックし、「New > Key」と選択します。

階層を追加出来たら、「Run」階層を選択し、右側の空白部で右クリックし「New > StringKey」と選択して文字列キーを追加します。

文字列キーを追加したら、プロパティウィンドウを開き、キーの名前と値を以下のように設定します。
- キーの名前(Name)
わかりやすい名前(英数字で指定) - 値(Value)
[TARGETDIR]<自作アプリのEXEファイル名>.exe

インストーラーを実行しているユーザのみにスタートアップを登録する場合
手順としては、すべてのユーザに対してスタートアップ登録を行う場合と同様ですが、キーを追加するレジストリのパスが異なります。
レジストリの構造上で、以下のようなパスにレジストリを登録する必要があります。HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / Run
上記のパスのような階層を追加した後、すべてのユーザに対してスタートアップ登録を行う場合と同様に、「Run」階層に以下のような名前と値を持つ文字列キーを追加します。
- キーの名前(Name)
わかりやすい名前(英数字で指定) - 値(Value)
[TARGETDIR]<自作アプリのEXEファイル名>.exe
3. インストーラーをビルド(生成)する
ソリューションエクスプローラーから、インストーラープロジェクトを右クリックし、「ビルド」をクリックします。
問題がなければ、ソリューションのフォルダ内にインストーラ(EXEファイルとMSIファイル)が出力されています。
4. インストーラの動作確認を行う
実際にインストーラを用いて自作アプリのインストールを行います。
インストールが完了したら、PCを再起動し自身のユーザでログオンします。
この時、自作アプリが自動的に起動すれば、正しくスタートアップ起動の登録が完了しています。
補足
コントローラパネルから自作アプリをアンインストールすると、インストーラが登録したレジストリも自動的に削除されます。
(こちらで何らかの処理を書かないとごみとして残るのかと思っていましたが、そんなことはなかったです。親切設計ですね。)
コメント