25

これは可能ですか?

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

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

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

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

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

4

3 に答える 3

62

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

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

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

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

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

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

InstallShield LE の一般情報

ヘルプ テキストでは、製品コードを変更してはいけないように聞こえます。これはそうではありません。「このコードは製品のバージョンを一意に識別するため、特定のリリースを既に配布した後で製品コードを変更することはお勧めしません」と、より明確に記述する必要があります。...またはそのようなもの。

基本的に、リリースする新しいバージョンを作成するときは、製品コードを変更する必要があります。アップグレード コードはそのままにしておいてください。製品コードを変更する{..}には、コードの右側にあるボタンをクリックします。InstallShield LE が新しいコードを生成します。

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

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

于 2012-08-04T21:14:25.710 に答える
4

私の知る限り、YJelton の回答は正しいですが、古い製品を確実に削除したい場合は、MajorUpgrade 項目を Upgrade テーブルに追加する必要があります。アップグレード コードを同じ (推奨されたとおり) に保つ場合は、次のことができます。 「アップグレード コードを共有する製品」オプションを選択し、製品バージョンには「以前のバージョン」を選択できます。

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

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

于 2013-06-12T15:30:49.883 に答える