web-dev-qa-db-ja.com

古いバージョンの上に新しいバージョンのデプロイメントプロジェクトをインストールする

古いバージョンにインストールできない展開プロジェクトがあります。 msiファイルには、最初に[プログラムの追加と削除]からプログラムをアンインストールするように指示されています。これは優れたユーザーエクスペリエンスではありません。インストーラーが最初にソフトウェアを削除してから新しいバージョンをインストールするようにするにはどうすればよいですか?

24
sbenderli

これは注意が必要です。次の手順を実行する必要があります。

  1. [以前のインストールを削除]をTrueに設定します
  2. [新しいバージョンの検出]を[True]に設定します
  3. C#プログラムのバージョンは、展開ごとに増やす必要があります
  4. インストーラーのバージョンを1つ上のバージョンに変更する必要があります。製品コードを変更するように求められますので、[はい]を選択します。
  5. アップグレードコードは変更しないでください。同じにしてください。

3番目の手順を正しく行わないと、インストーラーは古いファイルをインストールして保持します。コンテンツを変更した場合は、すべてのファイルのファイルバージョンが新しい必要があります。

27
Akash Kava

私はいくつかのシナリオを試しました、多分これは誰かが時間を節約するのを助けるでしょう

アセンブリバージョンが変更され、プロジェクトインストーラーのバージョンが変更された場合(ProductCode Guidも変更されます)->アプリが既存のものの上にインストールされます-> dllとexeバージョンが更新されます->インストール先のパスが異なる場合、既存の最初にインストールされたプロジェクトファイルが削除されますそれらがインストールされた場所から。 (およびそれ以降に作成されたファイルは残ります)

アセンブリバージョンが変更され、プロジェクトインストーラーのバージョンが変更された場合(ProductCode Guidが変更されていない場合)->ユーザーはアプリケーションを手動で削除するように求められます->先に進んでコントロールパネルから削除すると、アプリがインストールされ、dllとexeが更新されます新しいバージョンへ

アセンブリバージョンのみが変更された場合、またはプロジェクトインストーラーバージョンのみが変更された場合(ProductCode Guidは変更されません)->ユーザーはアプリケーションを手動で削除するように求められます->先に進んで最初にコントロールパネルから削除した場合、アプリをインストールしてdllとexeは新しいバージョンに更新されます

プロジェクトインストーラーのバージョンのみが変更された場合(ProductCode Guidも変更されます)-> MSIはインストールプロセスを実行しますが、dllとexeはバージョンを変更しません-それらはアセンブリバージョンに従っており、同じアセンブリビルドバージョンのファイルに置き換えられます-> IFインストール先のパスが異なり、最初にインストールされた既存のプロジェクトファイルがインストールされた場所から削除されます。 (それ以降に作成されたファイルはすべて残ります)

プロジェクトインストーラーのバージョンが変更され(ProductCode Guidも変更されます)、アセンブリバージョンがインストール済みバージョンよりも低い場合->インストールが開始され、エンドユーザーに古いバージョンとしてインストールが失敗したことが通知されます。

13
CRice

セットアッププロジェクトのプロパティを設定しますRemovePreviousVersions True

ただし、両方のセットアップアプリケーションで同じpgradeCodeを使用する必要があります

5
volody

新しいバージョンをインストールした後、古い製品が同じままになることがあります。

RemoveExistingProductsのシーケンス番号を変更する必要があります。これは、InstallValidateアクションとInstallInitializeの間でスケジュールする必要があります。あなたはORCAによってこれを行うことができます

Ex InstallValidate = 1400の場合InstallInitialize = 1500

次に、RemoveExistingProducts = 1450

0
Muhamed Shafeeq