バージョンアップしたアプリケーションを配布するインストーラーを 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] がインストールされているため、インストールを中断します。" />

image

インストールするファイルの配置

はじめてインストーラーを作成したときと同様に 新しくなったプログラムや関連するファイルを入れなおしてください。使わなくなったファイルは削除しておきます。

image

license.rtf の更新

インストール画面で表示させる使用許諾契約を変更したい場合は内容を変更してください。

image

Product.wxs のインストールファイル情報更新

※この項目の作業については、インストールするファイルやフォルダ構成が前のバージョンと一切変わっていない場合は行う必要はありません。

この項目の大まかな作業としては、以前のファイルのインストール設定をすべて消して再作成する方法を取っています。 もし1ファイルだけ増えた、または減ったぐらいであれば、直接 Product.wxs のコードをいじったほうが早いかもしれません。

「WixEdit」を起動します。

image

Product.wxsファイルを開きます。

image

image

左のアイコンから「Files」を選択します。 「ProgramFilesFolder」の下階層のフォルダを削除します。

image

「ProgramFilesFolder」フォルダを右クリックして「Import Folder」を選択します。

image

インストールするファイルがあるフォルダを選択します。

image

ツリーにファイルが一式追加されます。

image

他のパラメータとの関連付けの為に、追加したフォルダを選択し「Id」を「INSTALLFOLDER」に設定しなおします。

image

スタートメニューのショートカット作成を行います。 このショートカット作成作業については毎回同じ作業になってしまうので、 XML のコードを取っておいて後で貼り付けた方が早いかもしれません。(下の画像の選択部分)

image

exeファイルの右クリックメニューから「New」「Shortcut」を選択します。

image

Shortcutが追加されたら選択し、空欄を右クリックしてプロパティを追加していきます。

image

以下のパラメータを追加してください。(固有の名前はプログラムに合わせて直してください)

属性
Id LITTLESAVIORTRIAL.EXE_shortcut
Name リトルセイバー 体験版
Directory ProgramMenuDir
WorkingDirectory INSTALLDIR
Icon LITTLESAVIOR.ICO
IconIndex 0
Advertise yes

image

続いて「Feature」タブを選択します。

追加になったファイルがあれば追加し、いらなくなったファイルがあれば削除してください。

image

image

image

UI で操作するのが面倒であれば XML を直接編集しても構いません。

image

保存します。

image

ビルド・実行確認

Visual Studio でビルドしてインストーラーを作成してください。

前のバージョンをインストールしている状態で新しいバージョンのインストーラーを実行し上書きインストールされるか確認してください。

また、新しいバージョンをインストールしている状態で前のバージョンのインストーラーを実行したときにインストールできないことを確認してみてください。