2017-02-01 22 views
0

MyAppという製品があります。 この製品には、BASICやPROなどのさまざまなエディションが付属しています。どちらのエディションにも同じバージョンのインストーラがあります。私はBASIC版をインストールし、PROインストーラーを実行したとき更新時にパッケージコードの変更を検出する方法(スモールアップデート)

、私はInstallShieldがこれを検出します。全体的な星座は次のイメージに示されています。

  • UpCo =アップグレードコード
  • PRCO =商品コード
  • PaCoステータス=パッケージコードの黒矢印は問題なくメジャーアップグレードとして扱われ

​​

。 赤い矢印は問題を示しています。

このシナリオをあまりにも検出すると、変更されたパッケージコードをチェックすることを考えました。以下のリンクでは、このシナリオは小規模な更新と定義されています。

http://helpnet.flexerasoftware.com/isxhelp22/isxhelp22.htm#CSHID=helplibrary%2FUpgradeConsiderations.htm|StartTopic=helplibrary%2FUpgradeConsiderations.htm

  1. 私が使用することができますIS_MINOR_UPGRADEまたはIS_MAJOR_UPGRADE、などの特性は、ありますか?
  2. 以前と現在のインストールのパッケージコード、製品コード、およびアップグレードコードを確認することはできますか?次に、これらの値を比較して、このシナリオにInstallScriptで応答することができました。
+0

この問題をどのように解決することができますか?製品のサイズが異なる場合、1つのオプションをそれらを1つのインストーラーにマージし、アプリケーションライセンスキーを使用してインストール後にプロフィーチャーを「ロック解除」することができます。プロバージョンライセンスが入力されている場合は、基本インストールに追加される個別の機能を追加することもできます。 –

答えて

1

このシナリオでは、IS_MINOR_UPGRADEが設定されていない限り、このようなプロパティはありません。インストールされているパッケージに関する現在記録されている情報(MsiGetProductInfoを参照)を調べるカスタムアクションを記述することができますが、カスタムアクション内で呼び出すことができるWindows Installer APIの制限事項をすばやく実行する可能性があります。

エディション間に異なるファイルが存在すると仮定すると(同じファイル名の異なるビルドではなく、異なる名前)、「左」と「右」の両方で動く問題があると思います。そうすることで、少なくとも1つの方向を向いているマシンのコンポーネントが孤立している可能性があります。私は、これらの代替の方法のいずれかを使用することをお勧めします:

  • 異なる製品コードと、おそらくも異なるアップグレードコードを(使用あなたはサイド・バイを防ぐためにISPreventDowngrade 1に同様の戦略を採用する複数のメジャーアップグレードを追加することができます
  • スイート/アドバンストUIプロジェクトで配布されている、より小さいMSI(例えば、共有ファイルの場合は1つ、エディションごとのさまざまなファイルの場合は1つ、後者は前の箇条書きのように相互排他的かもしれません)または
  • 使用非インストーラのライセンス
あなたの版を施行するために、
+0

答えをありがとう。したがって、MsiGetProductInfoを使用して、INSTALLPROPERTY_PACKAGECODEを使用してパッケージコードを取得することができます。しかし、以前にインストールされたバージョンの製品コードを取得する方法はわかりません。 UpgradeTable関連のプロパティを使用すると、それは主要なアップグレードのためだけに機能します。それ以外の場合は空です。 –

+1

なぜPackageCodeについて気にしますか?あなたが構築した新しいMSIが更新、アップグレード、パッチなどで異なる必要があります。 – PhilDW

+0

あなたは正しいです。パッケージコードは常に異なっています。だから、私は同じ製品コードをチェックするだけです。しかし、どのように製品コードを取得するのですか?以前に書いたように、MyApp BASICバージョン2がインストールされていて、MyApp PROバージョン2インストーラを実行すると、アップグレードテーブルは空になります。 –

関連する問題