さて、ようやく主題であるアップグレードインストーラの話に入れる。アップグレードインストーラとは、すでにインストール済みであるアプリケーションを、そのままの状態でアップグレードできるインストーラだ。当たり前のような事を書いているかも知れないが、古いバージョンのアプリケーションを認識し、重複のないように新しいアプリケーションで置き換えるにはそれなりの工夫が必要だ。
アップグレードインストーラの基本的な動作を、以下のように定義しよう。
- 古いバージョンを探してアンインストール。
- 新しいバージョンをインストール。
たったのこれだけだが、これだけのことのために苦難の日々が待ち受けていようとは、誰も予想できなかったはずだ。実は、これをサポートできる機能はVisual Studio Installerには備えられてない。よって、Orcaデータベースエディタのお世話にならざるを得ない。
なお、最初に断っておくが、これから書く内容ではうまくアップグレードインストーラを作成することはできなかったのである。Microsoft社のドキュメントに書いてある内容に従って実行したが、足りない部分があるようだ。最善のソリューションは、Visual Studio Installer+Orcaではない。これを最初に書いておく。
アップグレード前のインストーラファイルをOrcaで開き、以下のプロパティの値を控えておく。
- [Property]-[ProductVersion]
- [Property]-[UpgradeCode]
アップグレードインストーラを新規に作成する場合には、ProductVersionをアップさせる。たとえば1.0.1など。3桁目までしか判別できないから注意。さらに、UpgradeCodeを合わせる。つまり、UpgradeCodeが同じものは同類のアプリケーションとして認識させ、ProductVersionで新旧の区別などをしているわけだ。これが最低限の下地となる。
既存のインストーラをベースにアップグレードインストーラを作成する場合には、Visual Studio Installerで作業して、プロジェクトのプロパティを変更すればいい。[製品情報]タブからバージョンの項目を変更し、製品コードの項目を新規コードボタンを押して変更する。間違っても、更新用コードの方を変更しないこと。
Visual Studio Installerのヘルプでは、これだけでアップグレードインストーラを作成できるかのようなことが書いてあるが、実際はこうはいかない。もう少し、インストーラファイルをいじくる必要がありそうだ。いろいろ調査したところでは、ほかにも作業が必要なようだ。これについては長くなるので、次回に回したい。