Ação MigrateFeatureStates
A ação MigrateFeatureStates é usada durante a atualização e ao instalar um novo aplicativo em um aplicativo relacionado. MigrateFeatureStates lê os estados de recurso no aplicativo existente e define esses estados de recurso na instalação pendente. O método só é útil quando a nova árvore de recursos não foi muito alterada em relação à original.
A ação MigrateFeatureStates só é executada na primeira vez em que o produto é instalado. A ação MigrateFeatureStates não é executada durante o modo de manutenção ou de desinstalação.
A ação MigrateFeatureStates é executada por meio de cada registro da tabela Upgrade em sequência e compara o código de atualização, a versão do produto e o idioma em cada linha com todos os produtos instalados no sistema. Se a ação MigrateFeatureStates detectar uma correspondência e se o sinalizador de bit msidbUpgradeAttributesMigrateFeatures for definido na coluna Attributes da tabela Upgrade, o instalador consultará os estados de recurso existentes em busca do produto e definirá esses estados para os mesmos recursos no novo aplicativo. A ação só migrará os estados do recurso se a propriedade Preselected não for definida.
Restrições de sequência
A ação MigrateFeatureStates deve vir imediatamente após a ação CostFinalize. MigrateFeatureStates precisa ser sequenciada na tabela InstallUISequence e na tabela InstallExecuteSequence. O instalador impedirá que MigrateFeatureStates seja executado em InstallExecuteSequence se a ação já tiver sido executada em InstallUISequence.
Mensagens de ActionData
MigrateFeatureSettings envia uma mensagem de dados de ação para cada produto.
Comentários
Se mais de um produto instalado compartilhar um recurso, o estado de instalação desse recurso poderá ser diferente entre os produtos. A ação MigrateFeatureState usa a seguinte ordem de precedência ao migrar estados de instalação de recursos: execução local, execução por meio da origem, anunciado e desinstalado. Por exemplo, o produto instalado A pode ter o recurso Y como INSTALLSTATE_LOCAL e o produto B instalado pode ter o recurso Y como INSTALLSTATE_ABSENT. Se uma atualização instalar o produto C e migrar o estado de instalação do recurso Y, MigrateFeatureState definirá o estado de instalação do recurso Y no produto C como INSTALLSTATE_LOCAL.
Para obter mais informações sobre como usar a ação MigrateFeatureStates para atualizações de produtos, confira Como preparar um aplicativo para futuras atualizações principais.