web-dev-qa-db-ja.com

InstallShield LEに既存のインストールを自動的にアンインストールさせる方法は?

これは可能ですか?

基本的に、サードパーティツール(Orcaなど)を使用して既存のMSIからGUIDを取得し、これらを使用してInstallShieldを構成して既存のバージョンをアンインストールする必要があることだけがわかります。私はこれらの指示のセットの1つまたは2つを試しましたが、今のところ何も機能していません。たぶん私は何か間違ったことをしているからかもしれませんが、私は比較的簡単なことだと思うことをするために多くのフープを飛び越えているようです。この問題は以前に解決されていませんか?

グーグルの一番上の結果は この答え を指しています:

  • orcaで古いMSIを開き、プロパティテーブルからUpgradeCodeを取得します
  • installShield LEプロジェクトで、ソリューションエクスプローラの「一般情報」に移動します
  • 「アップグレードコード」フィールドが古いMSI UpgradeCodeに設定されていることを確認してください

これは、新しいバージョンを展開するたびに「Orcaで古いMSIを開いてUpgradeCodeを取得する」必要があることを意味しますか?

これは少しハックに聞こえますが、新しいバージョンを展開するたびに実行したくないことは確かです。これを自動化する方法はありますか?この機能はInstallShieldのより高度なバージョンで利用できますか(LEを使用していることに注意してください-必要に応じてアップグレードします)

25
DaveDev

InstallShield LEは、以前のセットアッププロジェクトと同様に、以前にインストールされたバージョンを置き換える製品の新しいバージョンのインストールを可能にします。技術的に古い製品のアンインストールなのか、インプレースアップグレードなのかは、あまり重要ではないようです。

重要なのは製品コードアップグレードコードの違いです。

  • 製品コード:このコードは製品を一意に識別するため、リリースの配布後に製品コードを変更することはお勧めしません。

  • アップグレードコード: UpgradeCodeプロパティに格納されているアップグレードコードは、製品のすべてのバージョンで同じである必要があります。

(このテキストは、InstallShield LEヘルプライブラリから直接提供されています。)

これらのコードを使用して製品と同じ製品のバージョン更新を展開する方法は、簡単ではありません。

InstallShield LE General Information

ヘルプテキストは、製品コードを変更してはならないように聞こえます。これはそうではありません。 「このコードは製品を一意に識別するため、バージョンであるため、特定のリリースは推奨されません。」 ...またはそのようなもの。

基本的に、あなたはshouldリリースする新しいバージョンを作成するときに製品コードを変更します。 アップグレードコードはそのままにします!製品コードを変更するには、{..}ボタンをコードの右側に配置します。 InstallShield LEは新しいコードを生成します。

私の標準的な手順は、プロジェクトのバージョンを変更し、新しい製品コードを生成して、InstallShieldセットアッププロジェクトをビルドすることです。

以前のバージョンが既にインストールされているマシンに製品をインストールする場合、セットアッププロジェクトはそれを更新し、ターゲットマシンにインストールされているプログラムの1つのバージョン(最新)のみを残します。

62
JYelton

私が理解している限り、YJeltonの答えは正しいですが、古い製品を確実に削除したい場合は、アップグレードテーブルにMajorUpgrade項目を追加する必要があります。 [アップグレードコードを共有する製品]オプションを選択し、製品バージョンには[以前のバージョン]を選択できます。

これにより、アップグレードコードが古い製品と同じで、新しい製品のバージョン番号が新しい場合、古い製品は削除されます。

アップグレードコードを変更する場合は、「別のアップグレードコードを持つ製品」オプションが選択されているMajorUpgradeアイテムを追加できます。次に、古いアップグレードコードを貼り付けます。

3
ksun