MigrateFeatureStates アクション
MigrateFeatureStates アクションは、アップグレード中と、関連するアプリケーションに新しいアプリケーションをインストールするときに使用されます。 MigrateFeatureStates では、既存のアプリケーションの機能状態を読み取り、保留中のインストールにこれらの機能状態を設定します。 この方法は、新しい機能ツリーが元の機能ツリーから大幅に変更されていない場合にのみ役立ちます。
MigrateFeatureStates アクションは、製品が初めてインストールされたときにのみ実行されます。 MigrateFeatureStates アクションは、メンテナンス モードまたはアンインストール中には実行されません。
MigrateFeatureStates アクションは、Upgrade テーブルの各レコードに対して順番に実行され、各行のアップグレード コード、製品バージョン、言語をシステムにインストールされている製品と比較します。 MigrateFeatureStates アクションで対応が検出され、Upgrade テーブルの Attributes 列に msidbUpgradeAttributesMigrateFeatures ビット フラグが設定されている場合、インストーラーでは製品の既存の機能状態を照会し、新しいアプリケーションの同じ機能に対してこれらの状態を設定します。 このアクションでは、Preselected プロパティが設定されていない場合にのみ機能の状態を移行します。
順序の制限
MigrateFeatureStates アクションは、CostFinalize アクションの直後に行う必要があります。 MigrateFeatureStates は、InstallUISequence テーブルと InstallExecuteSequence テーブルの両方に配置する必要があります。 アクションが既に InstallUISequence で実行されている場合、インストーラーでは MigrateFeatureStates が InstallExecuteSequence で実行されないようにします。
ActionData のメッセージ
MigrateFeatureSettings は、各製品のアクション データ メッセージを送信します。
解説
複数のインストール済み製品で機能が共有されている場合、その機能のインストール状態が製品によって異なる場合があります。 MigrateFeatureState アクションでは、機能のインストール状態を移行するときに、ローカル実行、ソースからの実行、アドバタイズ、アンインストールという優先順位を使用します。 たとえば、インストール済みの製品 A には、INSTALLSTATE_LOCAL として機能 Y があり、インストール済みの製品 B には、INSTALLSTATE_ABSENT として機能 Y がある場合があります。 アップグレードによって製品 C がインストールされ、機能 Y のインストール状態が移行された場合、MigrateFeatureState では製品 C の機能 Y のインストール状態が INSTALLSTATE_LOCAL に設定されます。
製品のアップグレードに MigrateFeatureStates アクションを使用する方法の詳細については、「将来のメジャー アップグレード用のアプリケーションの準備」を参照してください。