3

VisualStudio2005インストーラーで記述されたインストーラーソリューションがあります。これはC#カスタムアクションを呼び出し、アップグレード時に、Windowsがカスタムアクションdllのキャッシュバージョンを実行しているため、新しいコードではなく古いインストールコードが実行されるという事実に関して、既知の問題が発生しました。私たちはこれを知っており、それについては月を越えていませんが、先に進みました。

新しいバージョンのインストーラーをリリースし、ユーザーがそれを実行するときに、より古いバージョンがインストールされているかどうかを確認する必要があります。[プログラムの追加と削除]を使用して古いバージョンを削除する必要があることを通知するメッセージを表示します。手動でアンインストールしてからインストールするかどうかはわかっていますが、すべて問題なく、ダンディです。ただし、ドキュメントを介してユーザーに何度伝えるかは問題ではありません。これが彼らがしなければならないことです-彼らはまだ古いバージョンを最初に削除せずに、新しいインストーラーを実行しようとします。

ですから、メッセージを出して、言われた通りに強制したいです!! 一部のインストーラーがこれを行うのを見てきました(もちろん、これらを作成するためにどのインストーラーパッケージが使用されたかはわかりませんが)。VS2005ともちろんorcaしかありません!!

乾杯、

クリス。

4

2 に答える 2

2

これは、カスタム起動条件を介して実行できます。

たとえば、検索プロパティがOLD_VERSIONの場合、起動条件は次のようになります。

調子:NOT OLD_VERSION

説明:An older version was found. Please uninstall it using "Programs and Features" in Control Panel.

OLD_VERSIONプロパティが値に設定されている場合(古いバージョンが見つかった場合)、この起動条件はメッセージを表示し、インストールプロセスを停止します。

于 2011-05-02T06:37:35.547 に答える
1

これはあまり意味がありません。新しいセットアップでパッケージ GUID を変更したことを覚えていますか? パッケージの GUID は特定のセットアップ ファイルを識別し、2 つの MSI ファイルが同じ GUID を持つ場合、同じかどうかに関係なく同じファイルとして扱われます。これにより、キャッシュされたバージョンの MSI が呼び出され、あらゆる種類の地獄が解き放たれる可能性があります。

新しいバージョンがインストールされる前に、既存のバージョンを自動的にアンインストールできるようにする「メジャー アップグレード」を読むことをお勧めします。また、実際に展開する前に、テクノロジーの基本を理解していることを確認する必要があります。MSI ファイルに同一のパッケージ GUID を使用しないでください。それは事実上常に間違っており、非常に不可解な問題を引き起こします。

メジャー アップグレード ソリューション全体をここに書き出すことはできませんが、基本的には、MSI の「アップグレード」テーブルを作成して、アンインストールするバージョンを検出する必要があります。パッケージ コード、製品コード、およびバージョン番号 (3 桁のみが重要) を変更し、同じアップグレード コードを維持する必要があります (同じアップグレード コードを持つ 2 つの MSI ファイルは、それらが関連していることを「認識」しています。つまり、同じ製品ファミリーからのものです)。 . メジャー アップグレードのサンプルについては、MSDN を確認してください。

注意!重複するパッケージ GUID を持つ MSI ファイルを開発者のコ​​ンピューターに展開した場合、MSIZap または同様のものでクリーンアップする必要がある浮遊インストールが含まれる可能性があります。注意を払うか、クリーンなテスト システムで新しいインストーラーをテストすることをお勧めします。開発者システムはがらくたでいっぱいで、一般的に MSI テストには向いていません。

于 2011-05-05T12:45:54.170 に答える