C#やVB.NETで作成したWindowsフォームアプリに対してインストーラを作成してみる。
以前(※)も同じような記事を書いたけど、最新版に書き直し。
※Visual Studio 2017でインストーラ作成
・Win10 → Win11
・Visual Studio 2017 → 2022
最近では、msix形式のインストーラも出てはいるみたいだけど、脆弱性が見つかって一時無効化されたり、バタバタしているようなので少し様子見。
それと、今回対象としているアプリは、WPFとかでなく、Windowsフォームアプリってことでmsi形式のインストーラで充分。
<追記>.NET Frameworkだけじゃなく、.NET 6や7、8(.NET Core系)でも作成できる。
ということで、早速作成方法。
もくじ
Visual Studio Installer Projectsの追加
※Visual Studio Installerインストール済みの場合、「Windowsアプリケーションの作成」へ
- Visual Studioを起動
- 拡張管理
[拡張機能]>[拡張機能の管理]メニューを開く。
※バージョンアップしたら「Manage Extensions」と英語表示なっていた。。 - ダウンロード
[拡張機能の管理]ダイアログの右上の検索ボックスから”Visual Studio Installer Projects”を検索し、ダウンロード。
- インストール
Visual Studioを閉じるとインストールが開始される。
インストール完了後、再起動する。
Windowsアプリケーションの作成
直接インストーラ作成と関係ないため割愛。
参考:Hello World!作成
インストーラ作成
- ソリューションを開く
Visual Studioでインストーラを作成したいアプリのプロジェクト(ソリューション)を開く。 - プロジェクトの追加
ソニューションエクスプローラー(画面右側)のソリューションを右クリックし、
[追加]>[新しいプロジェクト]メニューを開く。
- Setup Project
[新しいプロジェクトを追加]ダイアログの検索ボックスに”Setup Project”を入力(選択)し、[次へ]ボタンをクリック。
- プロジェクト名
[新しいプロジェクトを構成します]画面で、プロジェクト名を入力し、[作成]ボタンをクリック。
- ファイルシステムの編集
まずは、ファイルシステムから設定を行う。
上記流れで、既に「Files System(Setup名)」タブが表示されていると思うが無い場合は、「ソリューションエクスプローラー」のセットアップ(Setup1)を右クリックし、ポップアップメニューで[View]>「ファイルシステム」を選択すると表示できる。Application Folder 作成したアプリケーション(exe,dllなど)のコピー先などをここで指定する。
“C:\Program Files\ApplicationName\Application.exe”などUser’s Desktop ユーザーのデスクトップにコピーするものを指定。
プログラムのショートカットなどあれば指定。
デスクトップに配置User’s Program Menu ユーザーのプログラムメニューに追加するものを指定。
プログラムのショートカットなどを指定。※設定方法は後述。
- アプリケーションフォルダの設定
「Application Folder」を右クリックし、ポップアップメニュー[Add]>[プロジェクト出力]を選択。(※)
-
[プロジェクト出力グループの追加]ダイアログが表示されるので、そこで「プライマリ出力を選択。
すると、Windowsアプリケーションで作成したexeやdllなどをインストール対象として含んでくれる。
あと「構成」は「Release」を選択。
exeなど以外にも、例えばReadmeなどもインストールに含めておきたい場合、同様に、[Application Folder]を右クリックし、ポップアップメニュー[Add]>[ファイル]を選択しファイルを追加。
- ユーザーのデスクトップの設定
デスクトップにアプリのショートカットを作成したい場合などは、こちらを編集する。
今回は割愛。やり方は次の「ユーザーのプログラムメニューの設定」とほぼ同じ。 - ユーザーのプログラムメニューの設定
今度はWindowsのスタートメニューに登録する情報を設定する。
※Windowsスタートメニューにフォルダが必要な場合のみ - ショートカット作成
更に、作成したフォルダが選択された状態で、右側のListView画面を右クリックし、ポップアップメニュー[新しいショートカットの作成]を選択。
[Select Item in Project]ダイアログが表示されるので、そこでリストの中から”Application Folder”を選択([OK]押下またはダブルクリック)後、”プライマリ出力 from ~(Release Any CPU)”を選択し[OK]押下。
- プロパティ変更
メイン画面に戻り、追加された”Shortcut to プライマリ出力 from ~”を選択し、画面右側のプロパティで、[Name]を上記名前から、任意のショートカット名に変更する。
(ここでは、アプリ名の”プチカレンダ”に改名)
- アイコン変更
次に、表示するアイコンも変更する。
上記、[Name]同様に、プロパティの一覧にある[Icon]をダブルクリック。
表示された「Icon」ダイアログの[Browse…]ボタンを押下する。
「Select Item in Project」ダイアログで、アイコンの参照先である”Application Folder”をダブルクリック後、[File of Type]で”Execute Files(*.exe)”を選択。
すると一覧に”プライマリ出力 from ~(Release Any CPU)”などが表示されるので、これを選択し[OK]押下。
[Icon]ダイアログに戻ると、exeファイル内にあったアイコンが表示されているので、このアイコンを選択し[OK]押下。
これで、exeのショートカットがプログラムメニューの方にも登録され、必要最小限の設定は完了。
- プロパティの設定値を変更
最後に、セットアッププロジェクトのプロパティを一部修正する。[ソリューション エクスプローラー]で”Setup1″を選択し、その下のプロパティ一覧で必要に応じて以下の情報を修正する。
AddRemoveProgramsIcon インストール後、「アプリと機能」一覧に表示されるアイコン。
アイコンの変更方法は、上記同様。
Author デフォルトはメールアドレス。
今回は、作者”osada”に修正。Manufacturer デフォルトはメールアドレス。
今回は、メーカー”OsadaSoft”に修正。ManufacturerUrl デフォルトは空欄。
今回は、当サイトのURLに修正。ProductName デフォルトは作成したプロジェクト名(Setup1)。
製品名。インストール時のフォルダ名にも使用される。
今回は、”プチカレンダ”に修正。RemovePreviousVersions デフォルトはFalse。
Trueに設定しておくと、旧バージョンがインストールされているとき、自動的に旧バージョンを削除。Title デフォルトは作成したプロジェクト名(Setup1)。
セットアップ時の画面や、プロパティのタイトル名等に使用される。
今回は、”プチカレンダ”に修正。Version デフォルトは、1.0.0。
[アプリと機能]の一覧でも表示されるバージョン番号。
今回は、アプリ本体とバージョン番号を合わせ修正。 - セットアップファイル名変更
必要に応じてセットアップ(インストーラ)のファイル名を変更する。
ソリューションエクスプローラー内にある今作成したプロジェクト(Setup1)を右クリックし、「プロパティ」を開き、「Output file name」を任意の名前に変更する。
例)
変更前:Release\Setup1.msi
変更後:Release\SetupPetitCalendar.msi - 必須コンポ選択
[Prequisites…]ボタンをクリックし「必須コンポーネント」ダイアログを開く。
ランタイムを選択。
今回は、Microsoft .NET Framework 4.7.2(x86およびx64)を選択。※.NET 8で作った場合でも「.NET デスクトップランタイム8.0.0(x64)」等をちゃんと選べる。
「.NET デスクトップランタイム8.0.0(x64)」と「.NET ランタイム8.0.0(x64)」は別物なので要注意。 - インストーラを作成
設定が終わったので、いよいよインストーラの作成。
「ソリューション エクスプローラー」で今回作成したセットアッププロジェクト(ここでは”Setup1″)を右クリックし、ポップアップメニュー[ビルド]を選択。
これで、Setup1\Releaseフォルダ配下にも、”setup.exe”と”SetupPetitCalendar.msi”ファイルが作成される。
インストール実行
- インストーラの実行(テスト)
作成されたインストーラを試す場合、”setup.exe”を実行してみる。(msiが使えるPCであればmsi側でもOK)
それか、先ほどのVisual Studio上で”Setup1″のプロジェクトを右クリックし、ポップアップメニュー[インストール]を実行してみてもOK。
アンインストールする場合は、以下のいずれかで行う。
・インストール時同様、Visual Studio上のポップアップメニューから「アンインストール」を選択
・再度、エクスプローラーから”setup.exe”を実行
・一般のアプリ同様、[アプリと機能]からアンインストールから実行
久しぶりにインストーラーを作る必要があり、検索して参考にさせて貰いました。
とても有益な情報をありがとうございます。