Condividi tramite


Funzione VerInstallFileA (winver.h)

Installa il file specificato in base alle informazioni restituite dalla funzione VerFindFile. VerInstallFile decomprime il file, se necessario, assegna un nome file univoco e verifica la presenza di errori, ad esempio i file obsoleti.

Sintassi

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
);

Parametri

[in] uFlags

Tipo: DWORD

Questo parametro può essere uno dei valori seguenti. Tutti gli altri bit sono riservati.

Valore Significato
VIFF_FORCEINSTALL
0x0001
Installa il file indipendentemente dai numeri di versione non corrispondenti. La funzione controlla solo la presenza di errori fisici durante l'installazione.
VIFF_DONTDELETEOLD
0x0002
Installa il file senza eliminare il file installato in precedenza, se il file installato in precedenza non si trova nella directory di destinazione.

[in] szSrcFileName

Tipo: LPCTSTR

Nome del file da installare. Si tratta del nome file nella directory a cui punta il parametro szSrcDir; il nome file può includere solo il nome file e l'estensione, non un percorso.

[in] szDestFileName

Tipo: LPCTSTR

Il nome VerInstallFile darà il nuovo file al momento dell'installazione. Questo nome file può essere diverso dal nome file nella directory szSrcFileName. Il nuovo nome deve includere solo il nome e l'estensione del file, non un percorso.

[in] szSrcDir

Tipo: LPCTSTR

Nome della directory in cui è possibile trovare il file.

[in] szDestDir

Tipo: LPCTSTR

Nome della directory in cui deve essere installato il file. VerFindFile restituisce questo valore nel relativo parametro szDestDir.

[in] szCurDir

Tipo: LPCTSTR

Nome della directory in cui è possibile trovare una versione preesistente di questo file. VerFindFile restituisce questo valore nel relativo parametro szCurDir.

[out] szTmpFile

Tipo: LPTSTR

Nome di una copia temporanea del file di origine. Il buffer deve contenere almeno _MAX_PATH caratteri, anche se non è obbligatorio e deve essere vuoto nell'input.

[in, out] puTmpFileLen

Tipo: PUINT

Lunghezza del buffer di szTmpFile. Questo puntatore non deve essere NULL.

Quando la funzione viene restituita, lpuTmpFileLen riceve le dimensioni, in caratteri, dei dati restituiti in szTmpFile, incluso il carattere Null di terminazione. Se il buffer è troppo piccolo per contenere tutti i dati, lpuTmpFileLen sarà la dimensione del buffer necessaria per contenere i dati.

Valore restituito

Tipo: DWORD

Il valore restituito è una maschera di bit che indica le eccezioni. Può essere uno o più dei valori seguenti. Tutti gli altri valori sono riservati.

Codice/valore restituito Descrizione
VIF_ACCESSVIOLATION
0x00000200L
Operazione di lettura, creazione, eliminazione o ridenominazione non riuscita a causa di una violazione di accesso.
VIF_BUFFTOOSMALL
0x00040000L
Il buffer di szTmpFile era troppo piccolo per contenere il nome del file di origine temporaneo. Quando la funzione viene restituita, lpuTmpFileLen contiene le dimensioni del buffer necessario per contenere il nome file.
VIF_CANNOTCREATE
0x00000800L
La funzione non può creare il file temporaneo. L'errore specifico può essere descritto da un altro flag.
VIF_CANNOTDELETE
0x00001000L
La funzione non può eliminare il file di destinazione o non può eliminare la versione esistente del file che si trova in un'altra directory. Se il bit di VIF_TEMPFILE è impostato, l'installazione non è riuscita e il file di destinazione probabilmente non può essere eliminato.
VIF_CANNOTDELETECUR
0x00004000L
Impossibile eliminare la versione esistente del file e VIFF_DONTDELETEOLD non è stato specificato.
VIF_CANNOTLOADCABINET
0x00100000L
La funzione non può caricare il file CAB.
VIF_CANNOTLOADLZ32
0x00080000L
La funzione non può caricare il file compresso.
VIF_CANNOTREADDST
0x00020000L
La funzione non può leggere i file di destinazione (esistenti). Ciò impedisce alla funzione di esaminare gli attributi del file.
VIF_CANNOTREADSRC
0x00010000L
La funzione non può leggere il file di origine. Ciò potrebbe significare che il percorso non è stato specificato correttamente.
VIF_CANNOTRENAME
0x00002000L
La funzione non può rinominare il file temporaneo, ma ha già eliminato il file di destinazione.
VIF_DIFFCODEPG
0x00000010L
Il nuovo file richiede una tabella codici che non può essere visualizzata dalla versione del sistema attualmente in esecuzione. Questo errore può essere sottoposto a override chiamando VerInstallFile con il flag VIFF_FORCEINSTALL impostato.
VIF_DIFFLANG
0x00000008L
I file nuovi ed preesistenti hanno valori di lingua o tabella codici diversi. Questo errore può essere sottoposto a override chiamando di nuovo VerInstallFile con il flag VIFF_FORCEINSTALL impostato.
VIF_DIFFTYPE
0x00000020L
Il nuovo file ha un tipo, un sottotipo o un sistema operativo diverso dal file preesistente. Questo errore può essere sottoposto a override chiamando di nuovo VerInstallFile con il flag VIFF_FORCEINSTALL impostato.
VIF_FILEINUSE
0x00000080L
Il file preesistente è in uso dal sistema e non può essere eliminato.
VIF_MISMATCH
0x00000002L
I file nuovi ed preesistenti differiscono in uno o più attributi. Questo errore può essere sottoposto a override chiamando di nuovo VerInstallFile con il flag VIFF_FORCEINSTALL impostato.
VIF_OUTOFMEMORY
0x00008000L
La funzione non può completare l'operazione richiesta a causa di memoria insufficiente. In genere, ciò significa che l'applicazione ha esaurito la memoria tentando di espandere un file compresso.
VIF_OUTOFSPACE
0x00000100L
La funzione non può creare il file temporaneo a causa di spazio su disco insufficiente nell'unità di destinazione.
VIF_SHARINGVIOLATION
0x00000400L
Operazione di lettura, creazione, eliminazione o ridenominazione non riuscita a causa di una violazione di condivisione.
VIF_SRCOLD
0x00000004L
Il file da installare è precedente al file preesistente. Questo errore può essere sottoposto a override chiamando di nuovo VerInstallFile con il flag VIFF_FORCEINSTALL impostato.
VIF_TEMPFILE
0x00000001L
La copia temporanea del nuovo file si trova nella directory di destinazione. La causa dell'errore si riflette in altri flag.
VIF_WRITEPROT
0x00000040L
Il file preesistente è protetto da scrittura. Questo errore può essere sottoposto a override chiamando di nuovo VerInstallFile con il flag VIFF_FORCEINSTALL impostato.

Osservazioni

Questa funzione funziona su immagini di file a 16, 32 e 64 bit.

VerInstallFile copia il file dalla directory di origine alla directory di destinazione. Se szCurDir indica che esiste una versione precedente del file nel sistema, VerInstallFile confronta le informazioni sul timbro della versione dei file. Se la versione installata in precedenza del file è più recente della nuova versione o se gli attributi dei file sono significativamente diversi, ad esempio se si trovano in lingue diverse, VerInstallFile restituisce uno o più codici di errore recuperabili.

VerInstallFile lascia il file temporaneo nella directory di destinazione. L'applicazione può eseguire l'override dell'errore o eliminare il file temporaneo. Se l'applicazione esegue l'override dell'errore, VerInstallFile elimina la versione installata in precedenza e rinomina il file temporaneo con il nome file originale.

Nota

L'intestazione winver.h definisce VerInstallFile come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione winver.h (include Windows.h)
libreria Version.lib
dll Api-ms-win-core-version-l1-1-0.dll

Vedere anche

concettuale

riferimento

VerFindFile

informazioni sulla versione