Freigeben über


VerInstallFileW-Funktion (winver.h)

Installiert die angegebene Datei basierend auf informationen, die von der VerFindFile--Funktion zurückgegeben werden. VerInstallFile die Datei dekomprimiert, falls erforderlich, weist einen eindeutigen Dateinamen zu und sucht nach Fehlern, z. B. veralteten Dateien.

Syntax

DWORD VerInstallFileW(
  [in]      DWORD   uFlags,
  [in]      LPCWSTR szSrcFileName,
  [in]      LPCWSTR szDestFileName,
  [in]      LPCWSTR szSrcDir,
  [in]      LPCWSTR szDestDir,
  [in]      LPCWSTR szCurDir,
  [out]     LPWSTR  szTmpFile,
  [in, out] PUINT   puTmpFileLen
);

Parameter

[in] uFlags

Typ: DWORD-

Dieser Parameter kann einer der folgenden Werte sein: Alle anderen Bits sind reserviert.

Wert Bedeutung
VIFF_FORCEINSTALL
0x0001
Installiert die Datei unabhängig von nicht übereinstimmender Versionsnummern. Die Funktion prüft nur während der Installation auf physische Fehler.
VIFF_DONTDELETEOLD
0x0002
Installiert die Datei, ohne die zuvor installierte Datei zu löschen, wenn sich die zuvor installierte Datei nicht im Zielverzeichnis befindet.

[in] szSrcFileName

Typ: LPCTSTR-

Der Name der zu installierenden Datei. Dies ist der Dateiname im Verzeichnis, auf das der szSrcDir Parameter verweist; Der Dateiname kann nur den Dateinamen und die Erweiterung enthalten, nicht einen Pfad.

[in] szDestFileName

Typ: LPCTSTR-

Der Name VerInstallFile- gibt der neuen Datei bei der Installation. Dieser Dateiname unterscheidet sich möglicherweise vom Dateinamen im szSrcFileName Verzeichnis. Der neue Name sollte nur den Dateinamen und die Erweiterung enthalten, nicht einen Pfad.

[in] szSrcDir

Typ: LPCTSTR-

Der Name des Verzeichnisses, in dem die Datei gefunden werden kann.

[in] szDestDir

Typ: LPCTSTR-

Der Name des Verzeichnisses, in dem die Datei installiert werden soll. VerFindFile- gibt diesen Wert in seinem szDestDir--Parameter zurück.

[in] szCurDir

Typ: LPCTSTR-

Der Name des Verzeichnisses, in dem eine bereits vorhandene Version dieser Datei gefunden werden kann. VerFindFile- gibt diesen Wert in seinem szCurDir-Parameter zurück.

[out] szTmpFile

Typ: LPTSTR-

Der Name einer temporären Kopie der Quelldatei. Der Puffer sollte mindestens _MAX_PATH Zeichen lang sein, obwohl dies nicht erforderlich ist und bei der Eingabe leer sein sollte.

[in, out] puTmpFileLen

Typ: PUINT-

Die Länge des szTmpFile Puffers. Dieser Zeiger darf nicht NULL-sein.

Wenn die Funktion zurückgegeben wird, erhält lpuTmpFileLen die Größe der in szTmpFilezurückgegebenen Daten in Zeichen, einschließlich des endenden Nullzeichens. Wenn der Puffer zu klein ist, um alle Daten zu enthalten, ist lpuTmpFileLen- die Größe des Puffers, der zum Speichern der Daten erforderlich ist.

Rückgabewert

Typ: DWORD-

Der Rückgabewert ist eine Bitmaske, die Ausnahmen angibt. Dabei kann es sich um einen oder mehrere der folgenden Werte handeln. Alle anderen Werte sind reserviert.

Zurückgeben von Code/Wert Beschreibung
VIF_ACCESSVIOLATION
0x00000200L
Ein Lese-, Erstellungs-, Lösch- oder Umbenennungsvorgang ist aufgrund einer Zugriffsverletzung fehlgeschlagen.
VIF_BUFFTOOSMALL
0x00040000L
Der szTmpFile Puffer war zu klein, um den Namen der temporären Quelldatei zu enthalten. Wenn die Funktion zurückgegeben wird, enthält "lpuTmpFileLen"- die Größe des Puffers, der zum Speichern des Dateinamens erforderlich ist.
VIF_CANNOTCREATE
0x00000800L
Die Funktion kann die temporäre Datei nicht erstellen. Der spezifische Fehler kann durch ein anderes Flag beschrieben werden.
VIF_CANNOTDELETE
0x00001000L
Die Funktion kann die Zieldatei nicht löschen oder die vorhandene Version der Datei, die sich in einem anderen Verzeichnis befindet, nicht löschen. Wenn das VIF_TEMPFILE Bit festgelegt ist, ist die Installation fehlgeschlagen, und die Zieldatei kann wahrscheinlich nicht gelöscht werden.
VIF_CANNOTDELETECUR
0x00004000L
Die vorhandene Version der Datei konnte nicht gelöscht werden, und VIFF_DONTDELETEOLD nicht angegeben wurde.
VIF_CANNOTLOADCABINET
0x00100000L
Die Funktion kann die CAB-Datei nicht laden.
VIF_CANNOTLOADLZ32
0x00080000L
Die Funktion kann die komprimierte Datei nicht laden.
VIF_CANNOTREADDST
0x00020000L
Die Funktion kann die Zieldateien (vorhandene) nicht lesen. Dadurch wird verhindert, dass die Funktion die Attribute der Datei untersucht.
VIF_CANNOTREADSRC
0x00010000L
Die Funktion kann die Quelldatei nicht lesen. Dies kann bedeuten, dass der Pfad nicht ordnungsgemäß angegeben wurde.
VIF_CANNOTRENAME
0x00002000L
Die Funktion kann die temporäre Datei nicht umbenennen, die Zieldatei wurde jedoch bereits gelöscht.
VIF_DIFFCODEPG
0x000000010L
Für die neue Datei ist eine Codeseite erforderlich, die von der derzeit ausgeführten Version des Systems nicht angezeigt werden kann. Dieser Fehler kann überschrieben werden, indem VerInstallFile- mit dem VIFF_FORCEINSTALL Flagsatz aufgerufen wird.
VIF_DIFFLANG
0x00000008L
Die neuen und bereits vorhandenen Dateien weisen unterschiedliche Sprach- oder Codeseitenwerte auf. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut mit dem VIFF_FORCEINSTALL Flagsatz aufgerufen wird.
VIF_DIFFTYPE
0x000000020L
Die neue Datei weist einen anderen Typ, Untertyp oder Betriebssystem als die bereits vorhandene Datei auf. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut mit dem VIFF_FORCEINSTALL Flagsatz aufgerufen wird.
VIF_FILEINUSE
0x00000080L
Die bereits vorhandene Datei wird vom System verwendet und kann nicht gelöscht werden.
VIF_MISMATCH
0x000000002L
Die neuen und bereits vorhandenen Dateien unterscheiden sich in einem oder mehreren Attributen. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut mit dem VIFF_FORCEINSTALL Flagsatz aufgerufen wird.
VIF_OUTOFMEMORY
0x00008000L
Die Funktion kann den angeforderten Vorgang aufgrund unzureichendem Arbeitsspeicher nicht abschließen. Im Allgemeinen bedeutet dies, dass die Anwendung nicht genügend Arbeitsspeicher hat, um eine komprimierte Datei zu erweitern.
VIF_OUTOFSPACE
0x00000100L
Die Funktion kann die temporäre Datei nicht erstellen, da nicht genügend Speicherplatz auf dem Ziellaufwerk vorhanden ist.
VIF_SHARINGVIOLATION
0x00000400L
Ein Lese-, Erstellungs-, Lösch- oder Umbenennungsvorgang ist aufgrund eines Freigabeverstoßes fehlgeschlagen.
VIF_SRCOLD
0x00000004L
Die zu installierende Datei ist älter als die bereits vorhandene Datei. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut mit dem VIFF_FORCEINSTALL Flagsatz aufgerufen wird.
VIF_TEMPFILE
0x00000001L
Die temporäre Kopie der neuen Datei befindet sich im Zielverzeichnis. Die Ursache des Fehlers wird in anderen Flags widerverspiegelt.
VIF_WRITEPROT
0x00000040L
Die bereits vorhandene Datei ist schreibgeschützt. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut mit dem VIFF_FORCEINSTALL Flagsatz aufgerufen wird.

Bemerkungen

Diese Funktion funktioniert in 16-, 32- und 64-Bit-Dateibildern.

VerInstallFile kopiert die Datei aus dem Quellverzeichnis in das Zielverzeichnis. Wenn szCurDir angibt, dass eine frühere Version der Datei auf dem System vorhanden ist, VerInstallFile vergleicht die Versionsstempelinformationen der Dateien. Wenn die zuvor installierte Version der Datei aktueller als die neue Version ist oder die Attribute der Dateien erheblich unterschiedlich sind, z. B. wenn sie sich in verschiedenen Sprachen befinden, gibt VerInstallFile- mit mindestens einem behebbaren Fehlercode zurück.

VerInstallFile- die temporäre Datei im Zielverzeichnis belässt. Die Anwendung kann entweder den Fehler überschreiben oder die temporäre Datei löschen. Wenn die Anwendung den Fehler außer Kraft setzt, löscht VerInstallFile die zuvor installierte Version und benennt die temporäre Datei mit dem ursprünglichen Dateinamen um.

Anmerkung

Der winver.h-Header definiert VerInstallFile als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winver.h (enthalten Windows.h)
Library Version.lib
DLL- Api-ms-win-core-version-l1-1-0.dll

Siehe auch

Konzeptionelle

Referenz-

VerFindFile-

Versionsinformationen