2008-09-02 12 views
9

私は展開したいMSIを構築し、頻繁に更新します。残念ながら、MSIをインストールした後、同じMSIの新しいバージョンをインストールしようとすると、「この製品の別のバージョンが既にインストールされています。このバージョンのインストールを続行できません...」というメッセージが表示されます。 MSIはVisual Studio 2008セットアッププロジェクトで構築されました。私は古いバージョンを上書きするだけの努力の中で、「古いバージョンを削除する」プロパティを真と偽の両方に設定しようとしましたが、何も機能しませんでした。以前の会社では、WiseとAdvanced Installerによって構築されたインストーラにこの問題はありませんでした。私は行方不明の設定がありますか?または、VS 2008セットアッププロジェクトでサポートされていない機能がありますか?MSIインストーラは以前のインストールを削除せずに失敗します

答えて

9

これを正しく行うVS 2005 Proを使用して多数のMSIを構築しました。

デプロイメントプロジェクトの 'Version'プロパティが増分されていますか?このプロパティは、アプリケーション内のアセンブリのバージョンに依存しません。これは、MSIのVersionプロパティが上書きしようとしているものと同じである場合に表示されるエラーメッセージです。

+1

デプロイメントプロジェクトの[バージョン]プロパティはどうやって取得できますか?正確な手順は何ですか? – sagesky36

5

プロジェクトのバージョン番号をインクリメントします。

VSでは、セットアップアプリのノードを選択し、F4キーを押してプロパティを表示します。バージョンフィールドを見つけて、それを増分します。

3

各バージョン間でProductCodeを変更する必要があります。これを行わないと、表示されている動作が発生します。 ProductCodeはプロジェクトのプロパティに表示されます。よく理解するためにMSDN Online Help for ProductCodeをチェックしてください。

+1

メジャーアップグレードの製品コードのみを変更します。小規模の頻繁な更新では同じ製品コードを保持し、バージョンを増やす必要があります。 製品コードを変更すると、Windowsインストーラの視点から見ると、事実上新しいアプリケーションになります。 – saschabeaumont

0

XPからWin7に移行するときに同じ問題がありました。それを解決するには、DetectNewerInstalledVersionをFalseに設定する必要がありました。また、他の人が述べたように、あなたはセットアッププロジェクトのバージョンをインストールする必要があります。

幸運。

1

これはもう少し複雑です:

自動的にそれが必要とされているセットアッププロジェクトにインストールされたアプリケーションの以前のバージョンを削除するには:

  1. インクリメントバージョンプロパティ(例えば1.0.0からの1.0.1 ...第3位の作品にも変更)
    • バージョンは、どのバージョンのアプリケーションがインストールされているかを識別するインストーラプロジェクトのプロパティですED
  2. 製品コード財産なので、インストーラが実行され、同じインストーラ二回
    • 製品コードは、インストーラプロジェクトのプロパティは、Visual Studioが自動的にそれを変更することができますされていないことを知っているの変更、バージョンプロパティが変更されました
  3. "UpgradeCode"プロパティの値を保持します。
    • のUpgradeCodeもインストーラプロジェクト
    • の財産である、それは全体の「アップグレードライン」の中で、同じ滞在する必要がありますので、インストーラは、古いアプリケーションを削除したい場合
  4. をアップグレードするために知っていますバージョンコントロールパネルのソフトウェアの一覧からRemovePreviousVersionsをtrueに設定します。
+0

私は以前のバージョンを除いて、.msiでアンインストールしません。私は成功したビルドのバージョンと製品コードを変更するVBスクリプトがあります。 RemovePrevious Versionプロパティもtrueに設定されています。何か助けてください?克服する方法。 –

関連する問題