0

製品の新しいバージョンをインストールする Installshield Basic MSI インストーラーがあります。ユーザーがまだ古いバージョン (Installscript インストーラーによってインストールされている) を使用している場合、インストーラーは新しい製品のインストールに進む前に、古い製品のアンインストール文字列を実行します。

これにより、ユーザーが製品の新しいバージョンをアンインストールしようとすると、問題が発生します。プログラムを追加/削除してアンインストーラーを実行すると、アンインストーラーが実行されてファイルが削除されますが、追加/削除リストを更新すると、製品がまだインストールされているように見えます。ファイルは削除されましたが、レジストリに製品の残骸が残っています。

製品を効果的にアンインストールする唯一の方法は、サード パーティのレジストリ クリーナーを使用することです (場合によっては、これを基に作成されたスクリプトも使用します)。奇妙なことに、ユーザーが新しい製品をインストールする前に古い製品を手動でアンインストールすると、新しい製品のアンインストールは正常に機能します。また、古い製品をマシンにインストールせずに新しい製品をインストールすると、クリーン アンインストールも行われます。

2つの製品は製品コードが異なります。これを引き起こしている可能性のあるアイデアはありますか?ありがとう!

4

3 に答える 3

1

新しい製品のインストール中に古い製品のアンインストール文字列を呼び出している可能性があります。MSI インストール スクリプトは、すべての変更をログに記録し、「古いアンインストール」の変更も含めます。新しい製品をアンインストールすると、これらの変更が元に戻されるため、MSI はインストール開始前に存在していたレジストリ エントリを復元します。これらのエントリには、古い製品のアンインストール エントリが含まれます。

InstallShield Basic MSI モードについてはほとんど知りません。インストール シーケンスを変更したり、アクションを実行するタイミングを設定したりする機能がある場合は、InstallValidate と InstallInitialize の標準アクションの間に古い製品のアンインストールが発生するようにする必要があります。InstallShield でそのような制御ができない場合は、古いバージョンを手動でアンインストールするようユーザーに依頼する必要があります。

アンインストール アクションの配置については、次の記事を参照してください

于 2013-04-14T10:55:03.807 に答える
1

新しいインストーラーでアップグレード メカニズムが適切に設定されていないと思います。おそらく、アップグレードメニューの項目で「セットアップをインストールしてから不要なファイルを削除する」を選択したのでしょう。その場合は、「最初に古いセットアップを削除する」に変更し、適切な UpgradeCode を使用していることを確認してください。または、以前のバージョンのインストーラー専用の新しいアップグレード項目を作成し、インストール前に削除します。

于 2013-04-15T13:28:05.040 に答える