|
■No84976 (ド素人 さん) に返信 > こんにちは。 > VB2010で開発したWindowsフォームアプリの、 > msiを作成したのですが、バージョンを変更し再度msiを作成し、 > インストールすると、『別のバージョンの製品が既にインストールされています。…』と表示されます。 > > msiを作成する場合の留意点をご教授願います。 > > 例)Ver.1.0.0→上書き又は削除→Ver.1.0.1 > msiの作成は何を使いましたか?
Visual Studio のセットアップ作成ツールであれば、 セットアッププロジェクトのプロパティに RemovePreviousVersions というプロパティがあります。 これが True になっていないと以前のバージョンを削除してくれません。
また、セットアップの Version を挙げるときに、ProductCode を変更するか? というようなことを聞かれたはずです。 VSのセットアッププロジェクトは、ProductCode が同じままバージョンアップする方式 に対応していません(この形式を Minor Upgrade/Minor Updateと呼ぶ)。
VSのセットアップで、以前のバージョンをアンインストールして 新しいバージョンを自動的にインストールするためには
1.UpgradeCode は変えないように注意する 2.RemovePreviousVersions を True にする 3.インストーラのVersionを挙げる際、ProductCode を変更する
の3つを行えば、自動的に旧バージョンをアンインストールしてくれるはずです。
それと、実際にインストールするプログラムも、インストーラの更新に合わせて AssemblyFileVersion 属性をアップしておく必要があります。 この値が同じまま、同じ場所にインストールするとファイルの内容が変わっていても インストール済みのファイルがそのまま残ります。 なお、AssemblyVersion 属性はインストーラでは参照されませんので、こちらはインストーラの 観点からは任意の値のままでも問題はありませんが、アセンブリの参照関係や 厳密名の作成などで参照されることがあるので、そのあたりの兼ね合いできちんと 管理する必要はあります。
|