Compartilhar via


Criar um ICE

Se você não conseguir encontrar os Avaliadores de Consistência Interna necessários entre as ações personalizadas ICE existentes listadas na Referência de ICE, precisará preparar seu próprio ICE para validar o pacote.

Ao criar ações personalizadas de ICE, você deve fazer o seguinte:

  • Tenha como base os ICEs apenas em ações personalizadas dos tipos listados na tabela mostrada.
  • Chame MsiProcessMessage e publique um tipo de mensagem INSTALLMESSAGE_USER. Ao criar mensagens ICE, siga o formato da mensagem descrito nas Diretrizes de mensagens ICE.
  • Escreva o ICE de forma que ele capture todos os erros da API e sempre retorne ERROR_SUCCESS. Isso será necessário para permitir que ações personalizadas subsequentes sejam executadas após a falha de um ICE.

As ações personalizadas de ICE são limitadas aos seguintes tipos de ação personalizada.

Tipo de ação personalizada Descrição
Tipo de ação personalizada 1 DLL no fluxo binário
Tipo de ação personalizada 2 EXE no fluxo binário
Tipo de ação personalizada 5 JScript no fluxo binário
Tipo de ação personalizada 6 VBScript no fluxo binário
Tipo de ação personalizada 37 Código JScript como cadeia de caracteres
Tipo de ação personalizada 38 Código VBScript como cadeia de caracteres

 

Ao criar uma ação personalizada do ICE, não faça o seguinte:

  • Não suponha que o identificador do mecanismo que o ICE recebe seja uma instância de instalação do banco de dados do instalador. Se não for uma instância de instalação, determinadas propriedades não serão definidas, os diretórios de origem e de destino não serão resolvidos, e os estados de recurso atuais não serão definidos.
  • Não confie na execução anterior, ou não execução, de qualquer ação do instalador, ação personalizada ou outro ICE. Como um ICE anterior pode ter criado colunas temporárias em qualquer tabela, os autores deverão fazer referência às colunas pelo nome sempre que possível. Os ICEs deverão limpar todas as colunas ou tabelas temporárias antes de saírem.
  • Não suponha que os autores tenham acesso a uma imagem do diretório de origem do banco de dados.
  • Não presuma que as alterações feitas no banco de dados não persistam.

Exemplo de ICE em C++

Exemplo de ICE em VBScript