Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um programa de instalação normalmente tem os seguintes objetivos:
- Para colocar os arquivos no local correto.
- Para notificar o usuário se o programa de instalação estiver substituindo um arquivo existente por uma versão significativamente diferente — por exemplo, substituindo um arquivo em alemão por um arquivo em inglês ou substituindo um arquivo mais recente por um arquivo mais antigo.
Ao escrever o programa de instalação, você deve ter as seguintes informações para cada arquivo:
- O nome e o local do arquivo (referido como o arquivo de origem).
- O nome do arquivo equivalente no disco rígido do usuário (referido como o arquivo de destino). Esse nome geralmente é o mesmo que o nome do arquivo no disco de instalação.
- O status de compartilhamento do arquivo, ou seja, se o arquivo é privado para o aplicativo que está sendo instalado ou pode ser compartilhado por vários aplicativos.
O programa de instalação pode usar a função VerFindFile para determinar onde o arquivo deve ser copiado no disco. Esta função também pode ser usada para especificar se o arquivo é privado para o aplicativo ou pode ser compartilhado. Se ocorrer um problema ao localizar o ficheiro, VerFindFile devolve um valor de erro. Por exemplo, se o sistema estiver usando o arquivo de destino, VerFindFile retornará VFF_FILEINUSE. O programa de instalação deve notificar o usuário do problema e responder à decisão do usuário de continuar ou encerrar a instalação.
A função VerInstallFile copia o arquivo de origem para um arquivo temporário no diretório especificado pelo VerFindFile. Se necessário, VerInstallFile expande o arquivo usando as funções na biblioteca de descompactação de dados.
VerInstallFile compara as informações de versão do arquivo temporário com as do arquivo de destino. Se os dois diferirem, VerInstallFile retornará um ou mais valores de erro. Por exemplo, ele retorna VIF_SRCOLD se o arquivo temporário for mais antigo que o arquivo de destino e VIF_DIFFLANG se os arquivos tiverem identificadores de idioma ou valores de página de código diferentes. O programa de instalação deve notificar o usuário do problema e responder à decisão do usuário de continuar ou encerrar a instalação.
Alguns VerInstallFile erros são recuperáveis. Ou seja, o programa de instalação pode chamar VerInstallFile novamente, especificando a opção VIFF_FORCEINSTALL, para instalar o arquivo independentemente do conflito de versão. Se VerInstallFile retornar VIF_TEMPFILE e o usuário optar por não forçar a instalação, o programa de instalação deve excluir o arquivo temporário.
VerInstallFile pode encontrar um erro irrecuperável ao tentar forçar a instalação, mesmo que o erro não existisse anteriormente. Por exemplo, o arquivo pode ser bloqueado por outro usuário antes que o programa de instalação tente forçar a instalação. Se um programa de instalação tentar forçar a instalação após um erro não recuperável, VerInstallFile falhará. O programa de instalação deve conter rotinas para recuperar deste tipo de erro.
A solução recomendada é exibir uma caixa de diálogo com os botões Instalar, Ignorare Instalar tudo. (Outra solução é uma caixa de diálogo com os botões Sim, Sim para todos os, Ignorare Cancelar.) O botão Install All deve impedir que o programa de instalação avise o usuário sobre erros semelhantes, incluindo a opção VIFF_FORCEINSTALL em todos os usos subsequentes do VerInstallFile. Para erros irrecuperáveis, os botões Instalar e Instalar Tudo devem ser desativados.
Para exibir uma mensagem de erro útil para o usuário, o programa de instalação geralmente deve recuperar informações dos recursos de versão dos arquivos conflitantes. Existem quatro funções que o programa de instalação pode usar para esta finalidade:
GetFileVersionInfoSize retorna o tamanho das informações de versão. GetFileVersionInfo usa informações recuperadas pelo GetFileVersionInfoSize para recuperar uma estrutura que contém as informações de versão. VerQueryValue recupera um membro específico dessa estrutura.
Por exemplo, se VerInstallFile retornar o erro VIF_DIFFTYPE, o programa de instalação deverá usar o GetFileVersionInfoSize, GetFileVersionInfoe VerQueryValue funções nos arquivos temporários e de destino para obter o tipo geral de cada arquivo. Se os idiomas dos arquivos entrarem em conflito, o programa de instalação também deve usar VerLanguageName para traduzir o identificador de idioma binário em uma representação de texto do idioma. (Por exemplo, 0x040C se traduz para a cadeia de caracteres "francês.")
Se VerInstallFile retornar um erro de arquivo, como VIF_ACCESSVIOLATION, o programa de instalação deve usar a funçãoGetLastError para recuperar o valor de erro mais recente. O programa deve traduzir este valor em uma mensagem informativa para exibir ao usuário. O programa não deve produzir controle entre as chamadas para VerInstallFile e GetLastError.