Действие MigrateFeatureStates
Действие MigrateFeatureStates используется во время обновления и при установке нового приложения через связанное приложение. MigrateFeatureStates считывает состояния компонентов в существующем приложении, а затем задает эти состояния компонентов в ожидающей установке. Метод полезен только в том случае, если новое дерево признаков не сильно изменилось по сравнению с исходным.
Действие MigrateFeatureStates запускается только при первой установке продукта. Действие MigrateFeatureStates не выполняется в режиме обслуживания или удаления.
Действие MigrateFeatureStates последовательно выполняет каждую запись таблицы Upgrade и сравнивает код обновления, версию продукта и язык в каждой строке со всеми продуктами, установленными в системе. Если действие MigrateFeatureStates обнаруживает соответствие и если битовый флаг msidbUpgradeAttributesMigrateFeatures установлен в столбце Атрибуты таблицы Upgrade, установщик запрашивает существующие состояния компонентов для продукта и задает эти состояния для этих компонентов в новом приложении. Действие переносит состояния компонентов только в том случае, если свойство Preselected не задано.
Ограничения последовательностей
Действие MigrateFeatureStates должно появиться сразу после действия CostFinalize. Параметр MigrateFeatureStates должен быть упорядочен как в таблице InstallUISequence , так и в таблице InstallExecuteSequence. Установщик запрещает выполнение MigrateFeatureStates в InstallExecuteSequence, если действие уже выполнялось в InstallUISequence.
Сообщения ActionData
MigrateFeatureSettings отправляет сообщение с данными о действии для каждого продукта.
Комментарии
Если несколько установленных продуктов имеют общий доступ к компоненту, состояние установки для этого компонента может отличаться в разных продуктах. Действие MigrateFeatureState использует следующий порядок приоритета при переносе состояний установки компонентов: локальный запуск, запуск из источника, объявление и удаление. Например, установленный продукт A может иметь компонент Y в качестве INSTALLSTATE_LOCAL а установленный продукт B — компонент Y в качестве INSTALLSTATE_ABSENT. Если обновление устанавливает продукт C и переносит состояние установки компонента Y, MigrateFeatureState устанавливает состояние установки компонента Y в продукте C на INSTALLSTATE_LOCAL.
Дополнительные сведения об использовании действия MigrateFeatureStates для обновлений продукта см. в разделе Подготовка приложения к будущим крупным обновлениям.