Opções de agendamento de execução de ação personalizada
Como uma ação personalizada pode ser agendada na interface do usuário e nas tabelas de sequência de execução, e pode ser executada no processo de serviço ou cliente, uma ação personalizada pode ser executada várias vezes.
Note que o instalador:
- Executa ações em uma tabela de sequência imediatamente por padrão.
- Não executa uma ação se o campo de expressão condicional da tabela de sequência for avaliado como False.
- Processa a tabela de sequência da interface do usuário no processo do cliente se o nível da interface do usuário interno estiver definido para o modo de interface do usuário completo (consulte MsiSetInternalUI para obter uma descrição dos níveis da interface do usuário).
- É um serviço registrado por padrão ao usar o Windows 2000 e, nesse caso, a tabela de sequência de execução é processada no serviço do instalador.
Você pode usar os seguintes sinalizadores de opção para controlar várias execuções imediatas de ações personalizadas. Para definir uma opção, adicione o valor nesta tabela ao valor no campo Tipo da tabela CustomAction. Nenhum dos flags a seguir deve ser usado com ações de execução adiada personalizadas.
-
(padrão)
-
Hexadecimal: 0x00000000
Número Decimal: 0
Execute sempre. A ação pode ser executada duas vezes se estiver presente em ambas as tabelas de sequência.
-
msidbCustomActionTypeFirstSequence
-
Hexadecimal: 0x00000100
Decimal: 256
Não execute mais do que uma vez se estiver presente em ambas as tabelas de sequência. Sempre ignora a ação na sequência de execução se a sequência da interface do usuário tiver sido executada. Nenhum efeito na sequência da UI. A ação não precisa estar presente ou ser executada na sequência da interface do usuário para ser ignorada na sequência de execução. Não afetado pelo registro do serviço de instalação.
-
msidbCustomActionTypeOncePerProcess
-
Hexadecimal: 0x00000200
Decimal: 512
Execute uma vez por processo, caso esteja em ambas as tabelas de sequência. Ignora a ação na sequência de execução se a sequência da interface do usuário tiver sido executada no mesmo processo, por exemplo, ambas são executadas no processo do cliente. Usado para impedir que ações que modificam o estado da sessão, como dados de propriedade e banco de dados, sejam executadas duas vezes.
-
msidbCustomActionTypeClientRepeat
-
Hexadecimal: 0x00000300
Decimal: 768
Execute somente se estiver sendo executado no cliente após a execução da sequência de UI. A ação será executada somente se a sequência de execução for executada no cliente seguindo a sequência da interface do usuário. Pode ser usado para fornecer lógica de 'ou isto/ou aquilo', ou para suprimir o processamento relacionado à interface do utilizador, se já tiver sido realizado para a sessão do cliente.
Observe que, para executar uma ação personalizada durante dois modos de execução diferentes, crie duas entradas na tabela CustomAction . Por exemplo, para ter uma ação personalizada que chama uma biblioteca de vínculo dinâmico (DLL) C/C++ ( Custom Action Type 1) tanto quando o modo é MSIRUNMODE_SCHEDULED quanto MSIRUNMODE_ROLLBACK, coloque duas entradas na tabela CustomAction que chamam a mesma DLL, mas que têm tipos numéricos diferentes para as ações personalizadas. Inclua o código que chama MsiGetMode para determinar quando executar qual ação personalizada.
Tópicos relacionados