Partilhar via


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.

Referência de Ação Personalizada

Sobre ações personalizadas

Usando ações personalizadas