Como inicializar um aplicativo
Para habilitar a funcionalidade do instalador, um aplicativo deve chamar várias funções ao inicializar. Para saber mais, confira Mecanismo de Instalação. As etapas a seguir descrevem como usar o instalador para inicializar um aplicativo:
Para inicializar um aplicativo
Chame a função MsiGetProductCode para que o aplicativo possa se identificar para o instalador.
O código do produto é um parâmetro necessário para muitas funções de instalador.
Chame a função MsiGetUserInfo para coletar informações do usuário na primeira vez que o aplicativo for iniciado.
Se a chamada para MsiGetUserInfo falhar, chame a função MsiCollectUserInfo para coletar informações do usuário.
Exiba uma interface do usuário padrão, se necessário, chamando a função MsiSetInternalUI.
Para criar sua própria interface do usuário, registre-a no instalador chamando a função MsiSetExternalUI.
Chame a função MsiEnableLog para definir o nível de registro em log.
Apresente ao usuário os recursos disponíveis enumerando os recursos do seu aplicativo. Você pode enumerar os recursos das seguintes maneiras:
- Consultar recurso por recurso do instalador. Por exemplo, antes de o aplicativo desenhar um botão ou um item de menu, o aplicativo chama a função MsiQueryFeatureState para que o instalador possa verificar se o recurso está disponível.
- Enumerar todos os recursos disponíveis de uma só vez chamando a função MsiEnumFeatures. Para usar essa função, o aplicativo deve chamar MsiEnumFeatures repetidamente ao incrementar um índice.
Obtenha informações detalhadas sobre a instalação atual chamando as seguintes funções de enumeração repetidamente, incrementando uma variável de índice para cada chamada:
- Chame a função MsiEnumProducts para enumerar produtos registrados com o instalador.
- Chame a função MsiEnumComponents para enumerar componentes.
- Chame a função MsiEnumComponentQualifiers para enumerar qualificadores de componentes.
- Chame a função MsiEnumClients para enumerar os produtos de um componente específico.
Se o valor retornado em uma função de enumeração for ERROR_SUCCESS, ainda haverá mais itens a serem enumerados e a função deverá ser chamada novamente com uma variável de índice incrementada. Se o valor retornado for ERROR_NO_MORE_ITEMS, todos os itens foram enumerados, e a função não deverá ser chamada novamente.