11

Visual Studio 2010 を使用しており、Visual Studio Setup Project の代わりに InstallShield LE を使用するように切り替えたいと考えています。

RemovePreviousVersionsセットアップ プロジェクトには、新しいバージョンがリリースされたときに基本的にインプレース アップグレードを行うインストーラを作成するのに最適なオプションが存在していました。

InstallShield LE を使用して、バージョンを更新し、新しい ProductCode を生成しましたが、インストーラーを実行した後、以前のバージョンがまだ存在しています。

VS セットアップ プロジェクトでビルドされた以前のバージョンを、InstallShield でビルドされたプロジェクトで削除できるようにするには、どうすればよいですか?

4

4 に答える 4

42

Visual 2012 で最初にプロジェクトを開始したとき、これは私を夢中にさせました。プログラムの追加と削除で重複したコピーを取得し続け、古いバージョンは更新されませんでした。これが私がしなければならないことがわかったものです。

[アップグレード パス] で、新しいパスを作成します。最小バージョンを空白のままにして (必要でない限り)、最小バージョンを含めます はい。最大バージョンは、現在インストールしているバージョンに設定する必要があります。yes に最大バージョンを含めます。

アップデートをインストールするたびに、一般情報セクションで製品バージョンを進めます。一般情報セクションで新しい製品コードをクリックします。アップグレード コードは変更しないでください。

アップグレード パスに戻り、Max バージョンを現在デプロイしているのと同じバージョンに設定します。これは、これを機能させるための鍵でした。

このプロセスにより、以前のバージョンがアンインストールされ、最新のバージョンがインストールされます。プログラムの追加と削除に重複はありません。

お役に立てれば。

于 2013-04-25T18:40:19.423 に答える
8

これを試すことができます:

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

また、両方のバージョンで ALLUSERS プロパティの値が同じであることを確認する必要があります (アプローチは同じです)。アップグレードの詳細については、http: //msdn.microsoft.com/en-us/library/aa369786 (VS.85).aspx をご覧ください。

于 2011-06-23T06:17:11.207 に答える
4

user2321103 の答えは素晴らしいです。アップグレード パスに新しいアップグレード エントリを作成することが重要です。残念なことに、このオプションは、ほとんどの人がセットアップ プログラムの通常のデフォルト動作であると自然に期待するものを生成するために必要なため、隠されています。

この新しい回答の理由は、アップグレード エントリの最大バージョンを現在のバージョンよりも高い数値に設定できることがわかったためです。これは、新しいリリースごとにこれを更新することを覚えておく必要がないことを意味します。私の現在のバージョンは 2.1.8 なので、Max Version を 2.1.9999 に設定しました。万が一、将来のリリースで別の動作が必要になる可能性がある場合は、バージョンを 2.2.x に上げることができます。

Microsoft Setup Project は、バージョン番号を変更するたびに製品コードを自動的に更新しますが、Installshield LE は更新しないため、毎回これを行う必要があります。

他の回答が述べているように、アップグレード エントリが以前にインストールされたバージョンのアップグレード コードを使用することが重要です。私はこれを試していませんが、何らかの理由でアップグレード コードが異なる以前のバージョンが複数ある場合は、それぞれに個別のアップグレード エントリを作成できます。

[最小バージョンを含める] と [最大バージョンを含める] の両方を [いいえ] に設定できない理由がわかりませんが、これは機能していないようです。これらのさまざまなパラメーターのすべての組み合わせを試したわけではありませんが、他の回答で述べたように、次の設定でうまくいくようです。

  • 最小バージョン: 空白
  • 最小バージョンを含める: はい
  • 最大バージョン: >= 現在のバージョン
  • 最大バージョンを含める: はい

Lang Search Criterion を Exclude に変更しないことも重要なようです。また、[削除の失敗を無視] を [はい] に設定しました。Migrate Feature States を No に設定していますが、とにかくこれは LE エディションには関係ないと思います。

于 2014-12-16T11:27:17.480 に答える