【Windows Installer】シンプルなmsiを作る方法
Visual Studio Installer Projectを使ってシンプルなインストーラー(以降、msiと記載)を作る方法を記載します。
msiではファイルのインストールやレジストリの登録、ショートカット作成などを実行することができます。これ以外にもカスタムアクションを使えば、独自のインストール処理(例えば、ファイアーウォールの例外登録など)を実行することも可能です。
この記事では、まずはシンプルにファイルをインストールするだけの簡単なmsiを作る方法を記載します。
前提
あらかじめ、以下をインストールします。
- Visual Studio 2013/2015/2017/2019のいずれか
- Visual Studio Community
無料のVisual Studio Communityでもインストーラーを作成できます。
- Visual Studio Community
- Visual Studio 2013/2015/2017/2019 Installer Projectのいずれか
空のインストーラーの作成手順
まずはインストールしても何もしないインストーラーを作る方法を記載します。
Visual Studioを起動し、[新しいプロジェクトを作成]を選択します。
[Setup Project]を選択し、[次へ]をクリックします。
[プロジェクト名]、[場所]、[ソリューション名]を入力し、[次へ]をクリックします。
ここでは、[プロジェクト名]と[ソリューション名]はSimpleSetup
としています。
すると、何もしない空のプロジェクトが作成されます。
[ソリューションエクスプローラー]でプロジェクト(ここでは
SimpleSetup
)を選択し、[Author]、[Manufacture]、[ProductName]を修正します。これでビルドすれば空のインストーラーが作成されます。
ファイルを1つインストールするインストーラの作成手順
続いて、空のインストーラプロジェクトを、ファイルを1つインストールするように修正していきます。
インストールするファイルを用意します。
ここでは、プロジェクトフォルダは以下に[Files]フォルダを作成し、Readme.txt
ファイルを作成します。この後、Readme.txt
ファイルをインストールするインストーラーを作っていきます。
[File System]でインストールするファイルを追加します。
[File System]ではインストールするファイルやショートカットを管理する画面です。今回、Readme.txtはProgram Files
フォルダにインストールしたいので、[File System]-[Application Folder]を右クリック→[Add]-[ファイル]を選択します。
ファイル選択画面で、インストールするファイルを選択します。
先ほど作成したReadme.txtを選択し、[開く]をクリックします。
これでビルドすれば、ファイルをインストールするインストーラーの完成です。
解説
プロジェクトのプロパティについて
上記手順では、プロジェクトのプロパティで[Author]、[Manufacture]、[ProductName]を変更しました。これらは、[プログラムと機能]などの画面に表示されるものですが、これら以外に重要なプロパティがあるので、以下に記載します。
UpgradeCode, ProductCode, Version
これら3つのプロパティは、アップグレードを決定する重要なプロパティになります。
UpgradeCode
にはGUIDを設定します。このUpgradeCodeを変更すると別製品と認識され、UpgradeCode変更前の製品と変更後の製品が同時にインストール可能になります。一般的なバージョンアップしていく製品ではUpgradeCodeは変更しません。
ProductCode
にはGUIDを設定します。後述するメジャーアップデートを行う際に、Versionと一緒に変更します。
Version
にはドット区切りのバージョンを設定します。Windows Installerではドット区切りの3つめまでの数値のみ認識し、4つ目の数値は無視されます。
TargetPlatform
インストール対象のアーキテクチャ(x86/x64)を設定します。インストールするプログラムがx86かx64かで設定を変える必要があります。これによって、Program Files
フォルダのパスが変わってきます。
アップグレードについて
Windows Installerには3つのアップグレードがあります。
メジャーアップグレード
UpgradeCode
は変更せず、ProductCode
とVersion
を変更した場合にWindows Installerはメジャーアップグレードと判断します。メジャーアップグレードと判断されると、古いバージョンがアンインストールされ、新しいバージョンがインストールされます。
ここで注意が必要なのは、古いバージョンのアンインストールには古いバージョンのmsiが使用されてアンインストールされ、新しいバージョンのインストールには新しいバージョンのmsiが使用される、ということです。
一般的な製品でバージョンアップをする場合は、常にメジャーアップグレードをしていくと良いでしょう。
マイナーアップグレード
UpgradeCode
とProductCode
は変更せず、Version
を変更した場合にマイナーアップグレードと判断します。マイナーアップグレードと判断されると、古いバージョンのアンインストールは実行せず、上書きインストールされます。新しい機能やコンポーネントの追加も可能です。
マイナーアップグレードは単にmsiをダブルクリックしただけでは実行できません。コマンドラインで適切なオプションを指定して実行する必要があります。これは一般の人に実行をお願いするのは、まず難しいですので、基本的にメジャーアップグレードにすべきです。
スモールアップグレード
UpgradeCode
、ProductCode
、Version
のいずれも変更せず、PackageCode
というコードを変更します。ファイルを数個変更したい場合に使うものですが、バージョンによる区別がつかず、ファイルバージョンやタイムスタンプで区別するしかないので、製品としては使用すべきではありません。
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。