Ações personalizadas de sequenciamento
As ações personalizadas são agendadas em tabelas de sequência da mesma forma que as ações padrão.
Para agendar uma ação personalizada em uma tabela de sequência
- Insira o nome da ação personalizada (que é a chave primária da tabela CustomAction) na coluna Action da tabela Sequence.
- Insira a sequência da ação personalizada em relação às outras ações na tabela na coluna Sequence da tabela Sequence. Para obter mais informações sobre tabelas de sequência, confira Como usar uma tabela Sequence.
- Para ignorar condicionalmente a ação, insira uma expressão condicional na coluna Condition da tabela Sequence. O instalador ignorará essa ação, se a expressão for avaliada como FALSE.
Como no caso de ações padrão, as ações personalizadas agendadas em InstallUISequence ou AdminUISequence são executadas somente se a interface do usuário interna estiver definida como o nível completo. O nível de interface do usuário é definido usando a função MsiSetInternalUI.
As ações padrão e personalizadas agendadas nas tabelas InstallExecuteSequence, AdminExecuteSequence ou AdvtExecuteSequence não fazem alterações no sistema. Em vez disso, o instalador enfileira os registros de execução em um script para execução subsequente durante o serviço de instalação. Se não houver serviços de instalação, as ações agendadas nessas tabelas serão executadas no mesmo contexto que a sequência de interface do usuário.
Se o servidor instalador não estiver registrado, as ações personalizadas serão executadas no lado do cliente. Se o servidor estiver registrado e usar o modo de interface do usuário completa, as ações personalizadas serão executadas no lado do servidor.
Se estiver usando a interface do usuário completa com o servidor, as ações iniciais anteriores à ação InstallValidate serão executadas no cliente para permitir a interação completa. A execução será alternada para o servidor que repete essas ações e executa as ações de execução de script. Esse procedimento é seguido de um retorno ao cliente para as ações finais.
Observe que, se um produto foi removido definindo o recurso superior como ausente, a propriedade REMOVE pode não ser igual a ALL até depois da ação InstallValidate. Isso significa que qualquer ação personalizada que dependa de REMOVE=ALL deverá estar na sequência após a ação InstallValidate. Uma ação personalizada pode marcar REMOVE para determinar se um produto foi definido para ser completamente desinstalado.
As ações personalizadas que fazem referência a um arquivo instalado como a origem, como Tipo de Ação Personalizada 17 (DLL), Tipo de Ação Personalizada 18 (EXE), Tipo de Ação Personalizada 21 (JScript) e Tipo de Ação Personalizada 22 (VBScript), devem aderir às seguintes restrições de sequenciamento.
- A ação personalizada deve ser sequenciada após a ação CostFinalize para que o caminho para o arquivo referenciado possa ser resolvido.
- Se o arquivo de origem ainda não estiver instalado no computador, as ações personalizadas adiadas (no script) deverão ser sequenciadas ação InstallFiles.
- Se o arquivo de origem ainda não estiver instalado no computador, as ações personalizadas não adiadas deverão ser sequenciadas após a ação InstallInitialize.
As restrições de sequenciamento a seguir se aplicam a ações personalizadas que alteram ou atualizam um pacote do Windows Installer.
- Se a ação personalizada alterar o pacote, por exemplo, adicionando linhas a uma tabela, a ação deverá ser sequenciada antes da ação InstallInitialize.
- Se a ação personalizada fizer alterações que afetariam o custo, ela deverá ser sequenciada antes da ação CostInitialize.
- Se as ações personalizadas alteram o estado de instalação de recursos ou componentes, elas devem ser sequenciadas antes da ação InstallValidate.