UpgradeCode を使用する
UpgradeCode は主にメジャー アップグレードをサポートするために使われますが、小規模およびマイナーなアップグレード パッチで製品の検証に UpgradeCode を使用できます。 メジャー アップグレードの間に、FindRelatedProducts、MigrateFeatureStates、RemoveExistingProducts アクションは、以前のバージョンの製品を検出、移行、削除します。 FindRelatedProducts アクションは、UpgradeCode、ProductLanguage、ProductVersion に基づく条件を使って、製品を検索します。 これらの条件は、Upgrade テーブルで指定されています。
FindRelatedProducts アクションで使われる条件では、UpgradeCode は 1 つの製品のさまざまな言語とバージョンで同じにすることができます。 これは、Upgrade テーブルを使う、バージョンと言語の行で製品を区別できるためです。
同じ製品の異なるバージョン間で、UpgradeCode を変更する必要がない場合があります。 各スタンドアロン製品には、独自の UpgradeCode が必要です。 製品スイートにも、独自の UpgradeCode が必要です。 これにより、スイートは、Upgrade テーブルの複数の行を使って、スイートまたはスタンドアロン製品の以前のバージョンをアップグレードできます。
次の 2 つのシナリオでは、UpgradeCode の使用方法を示します。
- 製品 A と製品 B は、同じ ProductLanguage、ProductVersion、UpgradeCode で出荷されました。 製品 A と製品 B の ProductCode は異なります。 製品には同じ UpgradeCode が割り当てられているため、Upgrade テーブルを作成して、古いバージョンの製品 A と古いバージョンの製品 B を区別することはできません。この場合、製品 B を無視する製品 A のアップグレード インストールを作成できません。これらは異なる製品であるため、それぞれに異なる UpgradeCode が割り当てられている必要があります。
- 製品 A の英語版とフランス語版は、同じ ProductVersion と UpgradeCode で出荷されました。 製品 A の英語版とフランス語版の ProductLanguage と ProductCode は異なります。 英語版とフランス語版は同じ UpgradeCode を共有していますが、以前の英語版のみが検出されてアップグレードされ、以前のフランス語版は無視されるように、Upgrade テーブルを作成できます。 製品の異なる言語バージョンでは、同じ UpgradeCode を使用できます。