古いバージョンにインストールできない展開プロジェクトがあります。msi ファイルには、最初に [プログラムの追加と削除] からプログラムをアンインストールするように記載されています。これは良いユーザー エクスペリエンスではありません。インストーラーが最初にソフトウェアを削除してから新しいバージョンをインストールするようにするにはどうすればよいですか?
5 に答える
これはトリッキーです。次の手順を実行する必要があります。
- [以前のインストールの削除] を True に設定
- 新しいバージョンの検出を True に設定します
- C# プログラムのバージョンは、デプロイごとに増やす必要があります
- インストーラーのバージョンを 1 つ上のバージョンに変更する必要があります。製品コードを変更するように求められます。[はい] を選択します。
- アップグレードコードを変更しないでください。同じにしてください。
3 番目のステップを正しく実行しない場合でも、インストーラーは古いファイルをインストールして保持します。コンテンツを変更した場合、すべてのファイルのファイル バージョンは新しいものでなければなりません。
いくつかのシナリオを試してみましたが、これは誰かが時間を節約するのに役立つかもしれません
アセンブリ バージョンが変更され、プロジェクト インストーラーのバージョンが変更された場合 (ProductCode Guid も変更されます) -> アプリが既存のものの上にインストールされます -> dll と exe のバージョンが更新されます -> インストール先のパスが異なる場合、既存の最初にインストールされたプロジェクト ファイルが削除されますそれらがインストールされた場所から。(そしてそれ以降に作成されたファイルは残ります)
アセンブリ バージョンが変更され、プロジェクト インストーラーのバージョンが変更された場合 (ProductCode Guid の変更なし) -> ユーザーはアプリケーションを手動で削除するように求められます -> 最初にコントロール パネルから削除すると、アプリをインストールでき、dll と exe が更新されます新しいバージョンへ
アセンブリ バージョンのみが変更された場合、またはプロジェクト インストーラー バージョンのみが変更された場合 (ProductCode Guid は変更されません) -> ユーザーはアプリケーションを手動で削除するように求められます -> ユーザーが先に進み、最初にコントロール パネルから削除した場合、アプリをインストールし、dll とexeは新しいバージョンに更新されます
プロジェクト インストーラーのバージョンのみが変更された場合 (ProductCode Guid も変更されます) -> MSI はインストール プロセスを実行しますが、dll と exe はバージョンを変更しません - それらはアセンブリ バージョンごとであり、同じアセンブリ ビルド バージョンのファイルに置き換えられます -> IFインストール先のパスが異なる場合、最初にインストールされた既存のプロジェクト ファイルは、インストールされた場所から削除されます。(それ以降に作成されたファイルは残ります)
プロジェクト インストーラーのバージョンが変更され (ProductCode Guid も変更されます)、アセンブリのバージョンがインストールされているバージョンよりも低い場合 -> インストールが開始され、エンド ユーザーにインストールが古いバージョンとして失敗したことが通知されます。
セットアップ プロジェクト プロパティを設定するRemovePreviousVersions True
ただし、両方のセットアップ アプリケーションで同じUpgradeCodeを使用する必要があります。
新しいバージョンをインストールした後、古い製品が同じままになることがあります。
RemoveExistingProducts のシーケンス番号を変更する必要があります。Install Validate アクションと InstallInitialize の間でスケジュールする必要があります。これは ORCA で行うことができます
Ex InstallValidate=1400 InstallInitialize =1500 の場合
その後、RemoveExistingProducts = 1450