Compartilhar via


Função VerInstallFileA (winver.h)

Instala o arquivo especificado com base nas informações retornadas da função VerFindFile . VerInstallFile descompacta o arquivo, se necessário, atribui um nome de arquivo exclusivo e verifica se há erros, como arquivos desatualizados.

Sintaxe

DWORD VerInstallFileA(
  [in]      DWORD  uFlags,
  [in]      LPCSTR szSrcFileName,
  [in]      LPCSTR szDestFileName,
  [in]      LPCSTR szSrcDir,
  [in]      LPCSTR szDestDir,
  [in]      LPCSTR szCurDir,
  [out]     LPSTR  szTmpFile,
  [in, out] PUINT  puTmpFileLen
);

Parâmetros

[in] uFlags

Tipo: DWORD

Esse parâmetro pode usar um dos valores a seguir. Todos os outros bits são reservados.

Valor Significado
VIFF_FORCEINSTALL
0x0001
Instala o arquivo independentemente dos números de versão incompatíveis. A função verifica apenas se há erros físicos durante a instalação.
VIFF_DONTDELETEOLD
0x0002
Instala o arquivo sem excluir o arquivo instalado anteriormente, se o arquivo instalado anteriormente não estiver no diretório de destino.

[in] szSrcFileName

Tipo: LPCTSTR

O nome do arquivo a ser instalado. Esse é o nome do arquivo no diretório apontado pelo parâmetro szSrcDir ; o nome do arquivo pode incluir apenas o nome do arquivo e a extensão, não um caminho.

[in] szDestFileName

Tipo: LPCTSTR

O nome VerInstallFile fornecerá o novo arquivo após a instalação. Esse nome de arquivo pode ser diferente do nome do arquivo no diretório szSrcFileName . O novo nome deve incluir apenas o nome e a extensão do arquivo, não um caminho.

[in] szSrcDir

Tipo: LPCTSTR

O nome do diretório em que o arquivo pode ser encontrado.

[in] szDestDir

Tipo: LPCTSTR

O nome do diretório em que o arquivo deve ser instalado. VerFindFile retorna esse valor em seu parâmetro szDestDir .

[in] szCurDir

Tipo: LPCTSTR

O nome do diretório em que uma versão pré-inicial desse arquivo pode ser encontrada. VerFindFile retorna esse valor em seu parâmetro szCurDir .

[out] szTmpFile

Tipo: LPTSTR

O nome de uma cópia temporária do arquivo de origem. O buffer deve ter pelo menos _MAX_PATH caracteres, embora isso não seja necessário e deve estar vazio na entrada.

[in, out] puTmpFileLen

Tipo: PUINT

O comprimento do buffer szTmpFile . Esse ponteiro não deve ser NULL.

Quando a função retorna, lpuTmpFileLen recebe o tamanho, em caracteres, dos dados retornados em szTmpFile, incluindo o caractere nulo de terminação. Se o buffer for muito pequeno para conter todos os dados, lpuTmpFileLen será o tamanho do buffer necessário para armazenar os dados.

Retornar valor

Tipo: DWORD

O valor retornado é uma máscara de bits que indica exceções. Ela pode ser um ou mais dos seguintes valores. Todos os outros valores são reservados.

Valor/código retornado Descrição
VIF_ACCESSVIOLATION
0x00000200L
Falha em uma operação de leitura, criação, exclusão ou renomeação devido a uma violação de acesso.
VIF_BUFFTOOSMALL
0x00040000L
O buffer szTmpFile era muito pequeno para conter o nome do arquivo de origem temporário. Quando a função retorna, lpuTmpFileLen contém o tamanho do buffer necessário para manter o nome do arquivo.
VIF_CANNOTCREATE
0x00000800L
A função não pode criar o arquivo temporário. O erro específico pode ser descrito por outro sinalizador.
VIF_CANNOTDELETE
0x00001000L
A função não pode excluir o arquivo de destino ou não pode excluir a versão existente do arquivo localizado em outro diretório. Se o VIF_TEMPFILE bit estiver definido, a instalação falhará e o arquivo de destino provavelmente não poderá ser excluído.
VIF_CANNOTDELETECUR
0x00004000L
A versão existente do arquivo não pôde ser excluída e VIFF_DONTDELETEOLD não foi especificado.
VIF_CANNOTLOADCABINET
0x00100000L
A função não pode carregar o arquivo de gabinete.
VIF_CANNOTLOADLZ32
0x00080000L
A função não pode carregar o arquivo compactado.
VIF_CANNOTREADDST
0x00020000L
A função não pode ler os arquivos de destino (existentes). Isso impede que a função examine os atributos do arquivo.
VIF_CANNOTREADSRC
0x00010000L
A função não pode ler o arquivo de origem. Isso pode significar que o caminho não foi especificado corretamente.
VIF_CANNOTRENAME
0x00002000L
A função não pode renomear o arquivo temporário, mas já excluiu o arquivo de destino.
VIF_DIFFCODEPG
0x00000010L
O novo arquivo requer uma página de código que não pode ser exibida pela versão do sistema em execução no momento. Esse erro pode ser substituído chamando VerInstallFile com o sinalizador VIFF_FORCEINSTALL definido.
VIF_DIFFLANG
0x00000008L
Os arquivos novos e pré-existentes têm diferentes valores de linguagem ou página de código. Esse erro pode ser substituído chamando VerInstallFile novamente com o sinalizador VIFF_FORCEINSTALL definido.
VIF_DIFFTYPE
0x00000020L
O novo arquivo tem um tipo, subtipo ou sistema operacional diferente do arquivo pré-expirado. Esse erro pode ser substituído chamando VerInstallFile novamente com o sinalizador VIFF_FORCEINSTALL definido.
VIF_FILEINUSE
0x00000080L
O arquivo preexistir está em uso pelo sistema e não pode ser excluído.
VIF_MISMATCH
0x00000002L
Os arquivos novos e preexistentes diferem em um ou mais atributos. Esse erro pode ser substituído chamando VerInstallFile novamente com o sinalizador VIFF_FORCEINSTALL definido.
VIF_OUTOFMEMORY
0x00008000L
A função não pode concluir a operação solicitada devido à memória insuficiente. Em geral, isso significa que o aplicativo ficou sem memória tentando expandir um arquivo compactado.
VIF_OUTOFSPACE
0x00000100L
A função não pode criar o arquivo temporário devido a espaço em disco insuficiente na unidade de destino.
VIF_SHARINGVIOLATION
0x00000400L
Falha na operação de leitura, criação, exclusão ou renomeação devido a uma violação de compartilhamento.
VIF_SRCOLD
0x00000004L
O arquivo a ser instalado é mais antigo do que o arquivo preexistível. Esse erro pode ser substituído chamando VerInstallFile novamente com o sinalizador VIFF_FORCEINSTALL definido.
VIF_TEMPFILE
0x00000001L
A cópia temporária do novo arquivo está no diretório de destino. A causa da falha é refletida em outros sinalizadores.
VIF_WRITEPROT
0x00000040L
O arquivo preexistido é protegido por gravação. Esse erro pode ser substituído chamando VerInstallFile novamente com o sinalizador VIFF_FORCEINSTALL definido.

Comentários

Essa função funciona em imagens de arquivo de 16, 32 e 64 bits.

VerInstallFile copia o arquivo do diretório de origem para o diretório de destino. Se szCurDir indicar que existe uma versão anterior do arquivo no sistema, VerInstallFile compara as informações de carimbo de versão dos arquivos. Se a versão instalada anteriormente do arquivo for mais recente do que a nova versão ou se os atributos dos arquivos forem significativamente diferentes, por exemplo, se estiverem em idiomas diferentes, VerInstallFile retornará com um ou mais códigos de erro recuperáveis.

VerInstallFile deixa o arquivo temporário no diretório de destino. O aplicativo pode substituir o erro ou excluir o arquivo temporário. Se o aplicativo substituir o erro, VerInstallFile excluirá a versão instalada anteriormente e renomeará o arquivo temporário com o nome de arquivo original.

Observação

O cabeçalho winver.h define VerInstallFile como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winver.h (inclua Windows.h)
Biblioteca Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

Confira também

Conceitual

Referência

VerFindFile

Informações sobre versão