1

Delphi 6 ソフトウェアのインストールに InnoSetup 5.5.1 (a) を使用しています。あるユーザーから、手動でアンインストールしないと、コントロール パネルの [プログラムの削除] リストに古いアンインストール エントリが山積みになっているとの連絡がありました。古いエントリを自動的に削除するようにインストールを変更することを考えていますが、有効な古いエントリを削除したくありません。一部のユーザーは、新しいバージョンが気に入らない場合や、新しいバージョンで何かが壊れるのを恐れて、古いバージョンを 1 つまたは 2 つ保持することを好みます。

わかりやすくするために、ユーザーが通常デフォルトのインストール ディレクトリを受け入れ、既存のバージョンを上書きする典型的な状況について具体的に言及しています。ただし、一部のユーザーは、ほとんどの場合上書きすることを選択しながら、それらを保持するためだけに 1 つまたは複数のバージョンを別のディレクトリにインストールする場合があります。古いバージョンの削除に関するこのSO投稿を見つけました:

InnoSetup: 以前にインストールされたバージョンを自動的にアンインストールする方法は?

しかし、古いバージョンのどれが不要かどうかを検出する方法を知ることについての言及は見当たりませんでした。

したがって、インストール中に、ユーザーが実際に保持したいものを削除せずに、インストールされたプログラムのリストから古いアンインストール エントリを自動的に削除するにはどうすればよいですか?

4

1 に答える 1

1

アプリケーションの異なるバージョン間で同じ設定を維持している限りAppId、ユーザーがインストーラーを何回実行しても、追加/削除エントリは 1 つだけです。これは、ユーザーが 1 つのコピーしか持たず、最新の状態に維持したい典型的なアプリケーションの通常の推奨設計です。

ただし、ユーザーが後のインストールの 1 つ以上で別のインストール場所を選択した場合、古い場所が「孤立」する可能性があります。アンインストールを実行すると、新しいコピーは削除されますが、古い場所はそのまま残ります。エントリを追加/削除します。(アンインストーラーを手動で実行してアンインストールすることも可能です。)通常、[Setup]セクションに次のオプションを含めることで、この状況を回避することをお勧めします。

DisableDirPage=auto
DisableProgramGroupPage=auto

これらのオプションを使用すると、Inno はアップグレード インストールに関するこれらの質問をスキップします。これにより、ユーザーが誤って孤立したコピーを作成するのを防ぐことができます。(ユーザーが意図的にインストールを移動したい場合は、最初にアンインストールすることで実行できます。)

書かれているように意味をなさないので、私はあなたの質問を少し回避したことに注意してください-複数のコピーがある場合、どれが「余分」であるかを自動的に判断する方法はありません。ユーザーの。私がここで説明しようとしたのは、あなたの設計は、これが偶然に起こるのを思いとどまらせることを目指すべきだということです.

于 2012-12-24T11:13:57.833 に答える