Analisar mensagens do Windows Installer

Um manipulador de interface do usuário externa pode processar a lista de mensagens do instalador especificadas pelo parâmetro dwMessagedFilter da função MsiSetExternalUI. Algumas dessas mensagens contêm cadeias de caracteres que podem ser usadas diretamente e outras mensagens podem precisar ser analisadas e processadas pelo manipulador de interface do usuário externa para serem úteis. Talvez o manipulador de interface do usuário externa apenas precise monitorar mensagens do Windows Installer sem executar nenhuma operação que afete a instalação.

As seguintes mensagens do Windows Installer contêm cadeias de caracteres que podem ser exibidas por uma caixa de diálogo e não precisam de processamento adicional. Essas mensagens contêm uma lista de botões e ícones que devem ser exibidos por uma caixa de diálogo. Use os valores MB_ICONMASK, MB_DEFMASK e MB_TYPEMASK para especificar ícones e botões.

INSTALLMESSAGE_FATALEXIT

Ocorreu um encerramento prematuro da instalação.

INSTALLMESSAGE_ERROR

Mensagem de erro formatada.

INSTALLMESSAGE_WARNING

Mensagem de aviso formatada.

INSTALLMESSAGE_INFO

Mensagem de log formatada.

INSTALLMESSAGE_USER

Mensagem de usuário formatada.

INSTALLMESSAGE_OUTOFDISKSPACE

Mensagem formatada indicando uma condição de espaço em disco insuficiente

O manipulador de usuário externo pode usar as seguintes mensagens do Windows Installer para monitorar uma sequência da interface do usuário do Windows Installer. O instalador envia essas mensagens no início de uma sequência de interface do usuário do Windows Installer conforme cada caixa de diálogo é exibida e também no final da sequência de interface do usuário. Nenhum processamento é necessário para usar essas mensagens.

INSTALLMESSAGE_TERMINATE

Essa mensagem indica o fim da sequência de interface do usuário. A cadeia de caracteres é nula.

INSTALLMESSAGE_INITIALIZE

Essa mensagem indica que a sequência de interface do usuário foi iniciada. A cadeia de caracteres é nula.

INSTALLMESSAGE_SHOWDIALOG

A cadeia de caracteres contém o nome da caixa de diálogo atual.

As seguintes mensagens do Windows Installer exigem processamento adicional pelo manipulador de interface do usuário externa.

INSTALLMESSAGE_RESOLVESOURCE

O manipulador de interface do usuário externa deve retornar 0 e permitir que o Windows Installer manipule a mensagem. O manipulador de interface do usuário externa pode monitorar essa mensagem, mas não deve executar nenhuma ação que afete a instalação.

INSTALLMESSAGE_FILESINUSE

A interface do usuário externa deve exibir uma caixa de diálogo FilesInUse em resposta a essa mensagem.

INSTALLMESSAGE_RMFILESINUSE

A interface do usuário externa deve exibir uma caixa de diálogo MsiRMFilesInUse em resposta a essa mensagem. Disponível a partir do Windows Installer versão 4.0. Para obter mais informações sobre essa mensagem, consulte Usar o gerenciador de reinicialização com uma interface do usuário externa.

INSTALLMESSAGE_ACTIONSTART

Esta mensagem fornece informações sobre a ação atual. O formato é Ação [1]: [2]. [3], em que dois-pontos é usado para separar o Campo 1 e o Campo 2 e um ponto é usado para separar o Campo 2 e o Campo 3. O Campo [1] contém a hora em que a ação foi iniciada usando o formato da propriedade Hora. O Campo [2] contém o nome da ação da tabela de sequência. O Campo [3] fornece a descrição da ação da Tabela ActionText ou da função MsiProcessMessage.

INSTALLMESSAGE_ACTIONDATA

O formato dessa cadeia de caracteres é especificado pelo valor Modelo fornecido na Tabela ActionText ou pela função MsiProcessMessage. Pode haver um número ilimitado de mensagens INSTALLMESSAGE_ACTIONDATA após a mensagem INSTALLMESSAGE_ACTIONSTART.

INSTALLMESSAGE_COMMONDATA

Essa mensagem tem três subtipos: Idioma, Legenda e CancelShow. A cadeia de caracteres pode ter três campos delimitados por um número seguido por dois-pontos. Nem todos os campos são obrigatórios. A mensagem pode ser uma cadeia de caracteres NULA ou vazia ("").

Linguagem

O Campo 1 contém o valor 0 para indicar que essa cadeia de caracteres contém informações de idioma. O campo 2 contém um valor Linguagem que é um identificador numérico de idioma (LANGID.) O campo 3 é um valor que representa uma página de código ANSI.

Legenda

O Campo 1 contém o valor 1 para indicar que essa cadeia de caracteres contém o texto de uma legenda ou título. O Campo 2 contém o texto que um manipulador de interface do usuário externa pode usar como legenda de título para uma caixa de diálogo. O Campo 3 é NULO ou uma cadeia de caracteres vazia (""). O campo 3 pode estar ausente da mensagem de Legenda.

CancelShow

O Campo 1 contém o valor 2 para indicar que essa cadeia de caracteres contém informações sobre a exibição do botão cancelar. Caso o botão cancelar deva estar oculto, o Campo 2 contém o valor 0. Caso o botão cancelar deva estar visível, o Campo 2 contém o valor 1.

INSTALLMESSAGE_PROGRESS

Esta mensagem tem quatro subtipos: Reset, ActionInfo, ProgressReport e ProgressAddition. O manipulador externo não deve agir sobre nenhuma dessas mensagens até que a primeira mensagem "Reset progress" seja recebida. Isso fornece uma estimativa do número total de tiques para a barra de progresso.

Redefinir

O Campo 1 contém o valor 0 para indicar uma redefinição da barra de progresso. O Campo 2 contém o número total de tiques na barra de progresso. O Campo 3 contém o valor 0 para o movimento da barra de progresso. O Campo 3 contém o valor 1 para o movimento de retrocesso da barra de progresso. O valor 0 no Campo 4 significa que a instalação está em andamento e o tempo restante pode ser calculado. O valor 1 no Campo 4 significa que o script está sendo executado e uma mensagem "Aguarde ..." pode ser exibida. A estimativa do número total de tiques é uma aproximação e pode ser imprecisa.

ActionInfo

O Campo 1 contém o valor 1 para indicar que essa cadeia de caracteres contém informações de ação. O Campo 2 contém o número de tiques que a barra de progresso move para cada mensagem ActionData enviada pela ação atual. Caso o Campo 3 contenha o valor 0, ignore Campo 2. Caso o Campo 3 contenha o valor 1, incremente a barra de progresso pelo número de tiques no Campo 2 para cada mensagem ActionData enviada pela ação atual. O Campo 4 não é usado.

ProgressReport

O Campo 1 contém o valor 2 para indicar que essa cadeia de caracteres contém informações de progresso. O Campo 2 contém o número de tiques que a barra de progresso moveu. O Campo 3 não é usado. O Campo 4 não é usado.

ProgressAddition

O Campo 1 contém o valor 3 para indicar que uma ação pode adicionar tiques na barra de progresso. O Campo 2 contém o número de tiques a serem adicionados à contagem total esperada de tiques de progresso. O Campo 3 não é usado. O Campo 4 não é usado.