2016-05-20 12 views
1

1.7.211から1.7.212に移行する際にインストーラがマイナーアップグレードを実行していますが、常にメジャーアップグレードを実行したいと考えています。新しいインストーラは、以前のインストーラがインストールしたすべてのものを例外なく上書きします。これを実現するためにinstallshieldプロジェクトを変更する方法はありますか?Installshield 2012で大規模なアップグレードを実行するにはどうすればよいですか?

+0

どのプロジェクトタイプですか? MSIまたは非MSI? BasicまたはInstallScript? – yossiz74

+0

msiタイプだと思います。 (.exeと.msiの両方が生成され、.exeはインストールプロセスの一部としてmsiを抽出します)、それが基本かinstallscriptかはわかりません。私は基本的に決してマイナーアップデートをしたくない。私はそれが大きなアップデートを構成するためにバージョン番号の変更を考慮したい。 – ChopperCharles

答えて

0

基本的なMSIまたはInstallScript MSIプロジェクトタイプを使用していると仮定します。すべてのリリースで、メジャーアップグレードを実行するために必要な手順を実行する必要があります(正確には、これはInstallShieldルールではなくMSI ruleです)。

InstallShieldプロジェクトで、[アップグレード]ビューでメジャーアップグレードを作成します。これを設定するときは、「以前のバージョン」と言う必要があります。

リリースごとに、バージョン番号(最初の3桁の数字の1つ、MSIが4番目の数字を無視する)と製品コードGUIDを増やす必要があります。

「新しいインストーラは、以前のインストーラがインストールしたすべてのものを、常に例外なく上書きする必要があります」というステートメントには同意しません。リリース間で変更されたファイルのみを更新することが最優先事項である場合、多くの展開モデルがあります。そのモデルが現在あなたのために働くならば、素晴らしいです。マイナーチェンジとパッチのアップグレードの可能性と、それらのリリース計画のようなものを見てください。

+0

なぜ製品コードGUIDに触れなければならないのですか? 「以前のバージョン」でそれを処理すべきではありませんか?それをバージョン番号に直接結びつける方法はありますか?それで、新しいビルドが作成されたときには、それは自動的に行われますか? – ChopperCharles

+0

メジャーアップグレードが必要な場合は、製品コードGUIDをロールバックする必要があります。これはMSIの仕組みの一部です。すべてのビルドでプロダクトGUIDをロールバックする必要はありません。すべてのRELEASEはOKです。私は、すべてのリリースで大規模なアップグレードを自動強制することは再検討するべきことであることを繰り返し述べたい。 –

1

MSIプロジェクトの場合、「アップグレード」領域(「メディア」の下)に移動します。 'upgrade windows installer setup'で新しいメジャーアップグレードアイテムを作成します。そのアイテムについては、[特定のバージョンの範囲内]を選択し、最大バージョンを現在のバージョンより大きいバージョン番号(たとえば、あなたのケースでは1.8)に設定します。

Windowsインストーラがアップグレードモードで実行されることを検出すると、現在インストールされているバージョン(1.7.11)がメジャーアップグレードルールに適用され、メジャーアップグレードが実行されます。

関連する問題