バージョンアップしたアプリケーションを配布するインストーラーを WiX で作成する
環境
- Visual Studio
-
- Visual Studio Community 2017
- Visual Studio Community 2019
- WiX Toolset
- 3.11.2
※他のバージョンでも動作しますが未確認です
はじめに
アプリケーションをバージョンアップさせる際にインストーラーをどのように作成すべきかの手順について説明しています。 最初のバージョンのインストーラーの作成手順の記事をベースに説明していますので、 作り方に差異がある場合もあります。
更新前に前のプロジェクトを残しておきたい場合はファイルをコピーするなどなんらかの方法でバックアップしておいてください。
事前準備
- 最初のバージョンのインストーラーを作成済みであり、そのプロジェクトが存在すること。
アップグレードの種類について
以下の記事にもあるようにバージョンアップさせる際のアップグレードの方式はいくつか存在しますが、 ここでの手順は「メジャー・アップグレード」について説明しています。 特別な事情がない限りはこの方法で問題ありません。
Product.wxs の変更
Visual Studio を起動し、作成済みのプロジェクト(ソリューションファイル)を開きます。
Product.wxs を開き、以下のパラメータを変更していきます。
Wix/Product/@Id
「メジャー・アップグレード」を行う場合はこの Id を新しい GUID で置き換えます。
「マイナー・アップグレード」や「スモール・アップグレード」では変える必要はありませんがここでは説明いたしません。
<Wix>
<Product Id="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" />
Wix/Product/@Version
インストール時に新しいバージョンであるか判断するために使用しますので前のバージョンよりも数値を増やします。 「メジャーバージョン.マイナーバージョン.リビジョン.ビルド」の4つの数値がありますが、 バージョンが上がったかどうか判断されるのは「メジャーバージョン.マイナーバージョン.リビジョン」の3つです。
数値が増えればどんな数値でもかまいませんが、基本的にはアプリケーションのバージョンと合わせておくのが無難です。
<Wix>
<Product Version="1.8.0.0" />
Wix/Product/@UpgradeCode
このコードは同じアプリケーションのバージョンアップであるかを識別するコードになります。 そのため上書きインストールでバージョンアップさせる場合は最初にリリースしたときのコードから変更してはいけません。
逆に、バージョンアップであるが別アプリケーションとしてインストールさせたい場合は新しい GUID に置き換えます。
<Wix>
<Product UpgradeCode="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX">
Wix/Product/MajorUpgrade/@DowngradeErrorMessage
すでに新しいバージョンのアプリケーションがインストールされている状態で古いインストーラーを起動したときに表示させるメッセージです。 古いバージョンのインストーラーに対して使用されるので、すでに前のバージョンでメッセージを設定しているのであれば変える必要はありませんが、 変更したい場合は書き換えてください。
日本語を表示させる場合は Languages や SummaryCodepage の属性を日本語設定にする必要があります (日本語対応は別記事で紹介)。 [ProductName] は製品名に置き換わります。
<Wix>
<Product>
<MajorUpgrade DowngradeErrorMessage="すでに新しいバージョンの [ProductName] がインストールされているため、インストールを中断します。" />
インストールするファイルの配置
はじめてインストーラーを作成したときと同様に 新しくなったプログラムや関連するファイルを入れなおしてください。使わなくなったファイルは削除しておきます。
license.rtf の更新
インストール画面で表示させる使用許諾契約を変更したい場合は内容を変更してください。
Product.wxs のインストールファイル情報更新
※この項目の作業については、インストールするファイルやフォルダ構成が前のバージョンと一切変わっていない場合は行う必要はありません。
この項目の大まかな作業としては、以前のファイルのインストール設定をすべて消して再作成する方法を取っています。 もし1ファイルだけ増えた、または減ったぐらいであれば、直接 Product.wxs のコードをいじったほうが早いかもしれません。
「WixEdit」を起動します。
Product.wxsファイルを開きます。
左のアイコンから「Files」を選択します。 「ProgramFilesFolder」の下階層のフォルダを削除します。
「ProgramFilesFolder」フォルダを右クリックして「Import Folder」を選択します。
インストールするファイルがあるフォルダを選択します。
ツリーにファイルが一式追加されます。
他のパラメータとの関連付けの為に、追加したフォルダを選択し「Id」を「INSTALLFOLDER」に設定しなおします。
スタートメニューのショートカット作成を行います。 このショートカット作成作業については毎回同じ作業になってしまうので、 XML のコードを取っておいて後で貼り付けた方が早いかもしれません。(下の画像の選択部分)
exeファイルの右クリックメニューから「New」「Shortcut」を選択します。
Shortcutが追加されたら選択し、空欄を右クリックしてプロパティを追加していきます。
以下のパラメータを追加してください。(固有の名前はプログラムに合わせて直してください)
属性 | 値 |
---|---|
Id | LITTLESAVIORTRIAL.EXE_shortcut |
Name | リトルセイバー 体験版 |
Directory | ProgramMenuDir |
WorkingDirectory | INSTALLDIR |
Icon | LITTLESAVIOR.ICO |
IconIndex | 0 |
Advertise | yes |
続いて「Feature」タブを選択します。
追加になったファイルがあれば追加し、いらなくなったファイルがあれば削除してください。
UI で操作するのが面倒であれば XML を直接編集しても構いません。
保存します。
ビルド・実行確認
Visual Studio でビルドしてインストーラーを作成してください。
前のバージョンをインストールしている状態で新しいバージョンのインストーラーを実行し上書きインストールされるか確認してください。
また、新しいバージョンをインストールしている状態で前のバージョンのインストーラーを実行したときにインストールできないことを確認してみてください。