Freigeben über


VerInstallFileA-Funktion (winver.h)

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

Syntax

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

Parameter

[in] uFlags

Art: DWORD

Dieser Parameter kann einen der folgenden Werte annehmen. Alle anderen Bits sind reserviert.

Wert Bedeutung
VIFF_FORCEINSTALL
0x0001
Installiert die Datei unabhängig von nicht übereinstimmender Versionsnummern. Die Funktion überprü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 vom parameter szSrcDir verwiesen wird. Der Dateiname darf nur den Dateinamen und die Erweiterung enthalten, nicht einen Pfad.

[in] szDestFileName

Typ: LPCTSTR

Der Name VerInstallFile gibt die neue Datei bei der Installation an. Dieser Dateiname kann sich vom Dateinamen im Verzeichnis szSrcFileName unterscheiden. Der neue Name sollte nur den Dateinamen und die Erweiterung enthalten, keinen Pfad.

[in] szSrcDir

Typ: LPCTSTR

Der Name des Verzeichnisses, in dem sich die Datei befindet.

[in] szDestDir

Typ: LPCTSTR

Der Name des Verzeichnisses, in dem die Datei installiert werden soll. VerFindFile gibt diesen Wert im 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 im 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 sollte bei der Eingabe leer sein.

[in, out] puTmpFileLen

Typ: PUINT

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

Wenn die Funktion zurückgibt, empfängt lpuTmpFileLen die Größe der in szTmpFile zurückgegebenen Daten in Zeichen, einschließlich des beendenden NULL-Zeichens. Wenn der Puffer zu klein ist, um alle Daten zu enthalten, entspricht lpuTmpFileLen der Größe des Puffers, der zum Speichern der Daten erforderlich ist.

Rückgabewert

Art: DWORD

Der Rückgabewert ist eine Bitmaske, die Ausnahmen angibt. Er kann einen der folgenden Werte annehmen. Alle anderen Werte sind reserviert.

Rückgabecode/-wert BESCHREIBUNG
VIF_ACCESSVIOLATION
0x00000200L
Ein Lese-, Erstellungs-, Lösch- oder Umbenennungsvorgang ist aufgrund einer Zugriffsverletzung fehlgeschlagen.
VIF_BUFFTOOSMALL
0x00040000L
Der Puffer szTmpFile war zu klein, um den Namen der temporären Quelldatei zu enthalten. Wenn die Funktion zurückgibt, enthält lpuTmpFileLen die Größe des Puffers, der zum Speichern des Dateinamens erforderlich ist.
VIF_CANNOTCREATE
0x000000800L
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 wurde nicht angegeben.
VIF_CANNOTLOADCABINET
0x00100000L
Die Funktion kann die Ablagedatei nicht laden.
VIF_CANNOTLOADLZ32
0x00080000L
Die Funktion kann die komprimierte Datei nicht laden.
VIF_CANNOTREADDST
0x00020000L
Die Funktion kann die (vorhandenen) Zieldateien 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, aber die Zieldatei wurde bereits gelöscht.
VIF_DIFFCODEPG
0x00000010L
Die neue Datei erfordert eine Codepage, die von der derzeit ausgeführten Systemversion nicht angezeigt werden kann. Dieser Fehler kann überschrieben werden, indem VerInstallFile mit dem VIFF_FORCEINSTALL-Flag festgelegt wird.
VIF_DIFFLANG
0x00000008L
Die neuen und bereits vorhandenen Dateien weisen unterschiedliche Sprach- oder Codepagewerte auf. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut aufgerufen wird, wobei das VIFF_FORCEINSTALL-Flag festgelegt ist.
VIF_DIFFTYPE
0x00000020L
Die neue Datei weist einen anderen Typ, Subtyp oder Betriebssystem als die bereits vorhandene Datei auf. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut aufgerufen wird, wobei das VIFF_FORCEINSTALL-Flag festgelegt ist.
VIF_FILEINUSE
0x00000080L
Die bereits vorhandene Datei wird vom System verwendet und kann nicht gelöscht werden.
VIF_MISMATCH
0x00000002L
Die neuen und bereits vorhandenen Dateien unterscheiden sich in einem oder mehreren Attributen. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut aufgerufen wird, wobei das VIFF_FORCEINSTALL-Flag festgelegt ist.
VIF_OUTOFMEMORY
0x00008000L
Die Funktion kann den angeforderten Vorgang aufgrund von unzureichendem Arbeitsspeicher nicht abschließen. Im Allgemeinen bedeutet dies, dass der Anwendung der Arbeitsspeicher beim Erweitern einer komprimierten Datei ausging.
VIF_OUTOFSPACE
0x00000100L
Die Funktion kann die temporäre Datei aufgrund des unzureichenden Speicherplatzes auf dem Ziellaufwerk nicht erstellen.
VIF_SHARINGVIOLATION
0x00000400L
Ein Lese-, Erstellungs-, Lösch- oder Umbenennungsvorgang ist aufgrund einer Freigabeverletzung fehlgeschlagen.
VIF_SRCOLD
0x00000004L
Die zu installierende Datei ist älter als die bereits vorhandene Datei. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut aufgerufen wird, wobei das VIFF_FORCEINSTALL-Flag festgelegt ist.
VIF_TEMPFILE
0x00000001L
Die temporäre Kopie der neuen Datei befindet sich im Zielverzeichnis. Die Fehlerursache spiegelt sich in anderen Flags wider.
VIF_WRITEPROT
0x00000040L
Die bereits vorhandene Datei ist schreibgeschützt. Dieser Fehler kann überschrieben werden, indem VerInstallFile erneut aufgerufen wird, wobei das VIFF_FORCEINSTALL-Flag festgelegt ist.

Hinweise

Diese Funktion funktioniert auf 16-, 32- und 64-Bit-Dateiimages.

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, vergleicht VerInstallFile die Versionsstempelinformationen der Dateien. Wenn die zuvor installierte Version der Datei aktueller ist als die neue Version, oder wenn sich die Attribute der Dateien erheblich unterscheiden, z. B. wenn sie sich in verschiedenen Sprachen befinden, wird VerInstallFile mit einem oder mehreren wiederherstellbaren Fehlercodes zurückgegeben.

VerInstallFile belässt die temporäre Datei im Zielverzeichnis. 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.

Hinweis

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 nicht codierungsneutralem Code 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
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winver.h (einschließen von Windows.h)
Bibliothek Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

Siehe auch

Konzept

Referenz

VerFindFile

Versionsinformationen