MigrateFeatureStates 操作

MigrateFeatureStates 操作在升级期间以及通过相关应用程序安装新应用程序时使用。 MigrateFeatureStates 读取现有应用程序中的功能状态,然后在待处理的安装中设置这些功能状态。 仅当新的功能树与原始功能树相比没有太大变化时,方法才有用。

MigrateFeatureStates 操作仅在首次安装产品时运行。 MigrateFeatureStates 操作在维护模式或卸载期间不运行。

MigrateFeatureStates 操作按顺序运行 Upgrade 表的每个记录,并将每行中的升级代码、产品版本和语言与系统上安装的所有产品进行比较。 如果 MigrateFeatureStates 操作检测到对应关系,并且如果在 Upgrade 表的 Attributes 列中设置了 msidbUpgradeAttributesMigrateFeatures 位标志,安装程序将查询该产品的现有功能状态,并为新应用程序中的相同功能设置这些状态。 仅当未设置 Preselected 属性时,该操作才会迁移功能状态。

序列限制

MigrateFeatureStates 操作应紧跟在 CostFinalize 操作之后。 MigrateFeatureStates 必须在 InstallUISequence 表InstallExecuteSequence 表中进行排序。 如果操作已在 InstallUISequence 中运行,安装程序会阻止 MigrateFeatureStates 在 InstallExecuteSequence 中运行。

ActionData 消息

MigrateFeatureSettings 为每个产品发送一条操作数据消息。

备注

如果多个已安装的产品共享一项功能,则该功能的安装状态可能因产品而异。 MigrateFeatureState 操作在迁移功能安装状态时使用以下优先顺序:本地运行、从源运行、播发和卸载。 例如,已安装的产品 A 可能具有功能 Y 作为 INSTALLSTATE_LOCAL,已安装的产品 B 可能具有功能 Y 作为 INSTALLSTATE_ABSENT。 如果升级安装产品 C 并迁移功能 Y 的安装状态,MigrateFeatureState 会将产品 C 中功能 Y 的安装状态设置为 INSTALLSTATE_LOCAL。

有关如何使用 MigrateFeatureStates 操作进行产品升级的详细信息,请参阅为将来的主要升级准备应用程序