デプロイして頻繁に更新したい MSI を構築しました。残念ながら、MSI をインストールしてから同じ MSI の新しいバージョンをインストールしようとすると、「この製品の別のバージョンが既にインストールされています。このバージョンのインストールを続行できません...」というメッセージが表示されて失敗します。MSI は、Visual Studio 2008 セットアップ プロジェクトで構築されました。新しいバージョンが古いインストールを上書きするようにするために、「以前のバージョンの削除」プロパティを true と false の両方に設定しようとしましたが、何も機能しませんでした。以前の会社では、Wise および Advanced Installer によってビルドされたインストーラーでこの問題が発生しなかったことを知っています。不足している設定はありますか? または、目的の機能が VS 2008 セットアップ プロジェクトでサポートされていませんか?
5 に答える
これを正しく行うVS2005Proを使用して多数のMSIを構築しました。
デプロイメントプロジェクトの「バージョン」プロパティがインクリメントされていることを確認しますか?このプロパティは、アプリケーション内のアセンブリのバージョンとは無関係です。これは、MSIのVersionプロパティが、上書きしようとしているものと同じであるかどうかを確認するためのエラーメッセージです。
プロジェクトのバージョン番号をインクリメントします。
VSでは、セットアップアプリのノードを選択し、F4キーを押してプロパティを表示します。バージョンフィールドを見つけて、インクリメントします。
各バージョン間で ProductCode を変更する必要があります。これを行わないと、表示されている動作が得られます。ProductCode はプロジェクト プロパティに表示されます。ProductCodeのMSDN オンライン ヘルプを参照して、理解を深めてください。
これはもう少し複雑です:
Setup Project にインストールされている以前のバージョンのアプリケーションを自動的に削除するには、次の操作が必要です。
- Versionプロパティをインクリメントします (例: 1.0.0 から 1.0.1 ... 3 番目の位置の変更も機能します)。
- バージョンは、インストールされているアプリケーションのバージョンを識別するインストーラー プロジェクトのプロパティです。
- ProductCodeプロパティを変更して、インストーラーが 2 回実行された同じインストーラーではないことを認識できるようにします。
- ProductCodeはインストーラー プロジェクトのプロパティです。Visual Studio は、Versionプロパティが変更されると、自動的に変更することを提案します。
- 「UpgradeCode」プロパティの値を保持します。
- UpgradeCodeはインストーラー プロジェクトのプロパティでもあります
- 「アップグレードライン」全体で同じままにする必要があるため、インストーラーは何をアップグレードするかを認識します
- コントロール パネルのソフトウェア リストから古いバージョンのアプリケーションも削除する場合は、RemovePreviousVersionsを trueに設定します。
XP から Win7 に移行したときに同じ問題が発生しました。それを解決するには、DetectNewerInstalledVersion を False に設定する必要がありました。また、他の人が述べたように、セットアップ プロジェクトのバージョンを inc する必要があります。
幸運を。