3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

Visual Studioセットアッププロジェクトでアップデートインストーラを作る

環境:Vitual Studio 2005 Pro

VSのセットアッププロジェクトでマイナーバージョンアップ用アップデートインストーラを作る方法です。

バグの修正等でマイナーバージョンアップする場合、ユーザが現行バージョンを明示的にアンインストールすることなく、アップデート用インストーラが旧バージョンを削除し、新バージョンをインストールするというほうがユーザには優しいでしょう。

もちろん、新規インストール時にも使えるようにする必要もあります。つまり、新規・アップデート兼用インストーラです。

(メージャーバージョンアップの場合はアップグレードになるので、また話が違ってくると思いますが。)

セットアッププロジェクトでちゃんと設定しないと下記のように「別のバージョンの製品が既にインストールされています。」とエラーになったりします。

いろいろ試した結果下記のような設定だとうまくいきました。

セットアッププロジェクトのプロパティを下記のようにします。

RemovePreviousVersionsTrue にする。これは旧バージョンをインストーラで削除するプロパティらしいです。

UpgradeCode は変更しない。(前バージョンと同じコードにする)

ProductCode は新しいコードに変更する。(Versionプロパティを変更するとProductCodeも変更するかVSが聞いてきます)

Version をインクリメントする。

このインストーラでアップデートするとき、インストールフォルダを変更すると、前のインストールフォルダは本来消えないといけないのですが、カスタム動作するようにしてると、やはり *.InstallState ファイルは残ってしまいます。

( *.InstallState が残る件はVisual Studioセットアッププロジェクトのカスタム動作を参照。)

なお、すでにインストールされているバージョンより古いバージョンを入れようとすると下記のメッセージが表示されます。