Freigeben über


MsiDetermineApplicablePatchesA-Funktion (msi.h)

Die MsiDetermineAppliceApplicablePatches--Funktion verwendet eine Reihe von Patchdateien, XML-Dateien und XML-Blobs und bestimmt, welche Patches auf ein angegebenes Windows Installer-Paket und in welcher Reihenfolge gelten. Die Funktion kann ersetzte oder veraltete Patches berücksichtigen. Diese Funktion berücksichtigt keine Produkte oder Patches, die auf dem System installiert sind, die nicht in der Gruppe angegeben sind.

Syntax

UINT MsiDetermineApplicablePatchesA(
  [in] LPCSTR                 szProductPackagePath,
  [in] DWORD                  cPatchInfo,
  [in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);

Parameter

[in] szProductPackagePath

Vollständiger Pfad zu einer .msi Datei. Die Funktion bestimmt die Patches, die für dieses Paket und in welcher Reihenfolge gelten.

[in] cPatchInfo

Anzahl der Patches im Array. Muss größer als Null sein.

[in] pPatchInfo

Zeiger auf ein Array von MSIPATCHSEQUENCEINFO Strukturen.

Rückgabewert

Die MsiDetermineApplicablePatches Funktion gibt die folgenden Werte zurück.

Wert Bedeutung
ERROR_FUNCTION_FAILED
Fehler bei der Funktion, die nicht in den anderen Fehlercodes behandelt wird.
ERROR_INVALID_PARAMETER
Ein Argument ist ungültig.
ERROR_PATCH_NO_SEQUENCE
Für die Reihe von Patches wurde keine gültige Sequenz gefunden.
ERROR_SUCCESS
Die Patches wurden erfolgreich sortiert.
ERROR_FILE_NOT_FOUND
Die .msi Datei wurde nicht gefunden.
ERROR_PATH_NOT_FOUND
Der Pfad zur .msi Datei wurde nicht gefunden.
ERROR_INVALID_PATCH_XML
Die XML-Patchdaten sind ungültig.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
Ein Installationspaket, auf das anhand des Pfads verwiesen wird, kann nicht geöffnet werden.
ERROR_CALL_NOT_IMPLEMENTED
Dieser Fehler kann zurückgegeben werden, wenn die Funktion von einer benutzerdefinierten Aktion aufgerufen wurde oder MSXML 3.0 nicht installiert ist.

Bemerkungen

Wenn diese Funktion aus einer benutzerdefinierten Aktion aufgerufen wird, schlägt sie fehl und gibt ERROR_CALL_NOT_IMPLEMENTED zurück. Für die Funktion muss MSXML, Version 3.0, XML verarbeiten und ERROR_CALL_NOT_IMPLEMENTED zurückgeben, wenn MSXML 3.0 nicht installiert ist.

Die MsiDetermineApplicablePatches--Funktion legt die uStatus- und dwOrder Member der einzelnen MSIPATCHSEQUENCEINFO Struktur fest, auf die durch pPatchInfoverwiesen wird. Jede Struktur enthält Informationen zu einem bestimmten Patch.

Wenn die Funktion erfolgreich ist, MSIPATCHSEQUENCEINFO Struktur jedes Patches, das auf das Produkt angewendet werden kann, mit einem uStatus- von ERROR_SUCCESS und einem dwOrder größer oder gleich Null zurück. Die Werte von dwOrder größer oder gleich Null geben die beste Anwendungssequenz für die Patches an, die mit Null beginnen.

Wenn die Funktion erfolgreich ist, geben Patches, die von der besten Patchingsequenz ausgeschlossen sind, eine MSIPATCHSEQUENCEINFO- Struktur mit einem dwOrder- gleich -1 zurück. In diesen Fällen gibt ein uStatus- Feld von ERROR_SUCCESS einen Patch an, der veraltet oder für das Produkt ersetzt wird. Ein uStatus- Feld von ERROR_PATCH_TARGET_NOT_FOUND gibt einen Patch an, der für das Produkt nicht zulässig ist.

Wenn die Funktion fehlschlägt, gibt die MSIPATCHSEQUENCEINFO- Struktur für jeden Patch eine dwOrder- gleich -1 zurück. In diesem Fall können die uStatus-felder Fehler mit weiteren Informationen zu einzelnen Patches enthalten. Beispielsweise wird ERROR_PATCH_NO_SEQUENCE für Patches zurückgegeben, die zirkuläre Sequenzierungsinformationen enthalten.

Anmerkung

Der msi.h-Header definiert MsiDetermineApplicablePatches 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 Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer 3.0 oder höher unter Windows Server 2003 oder Windows XP. Informationen zum mindestens von einer Windows Installer-Version erforderlichen Windows-Service Pack finden Sie unter den Windows Installer-Run-Time Anforderungen.
Zielplattform- Fenster
Header- msi.h
Library Msi.lib
DLL- Msi.dll

Siehe auch

MsiDeterminePatchSequence-

in Windows Installer 2.0 und früheren nicht unterstützt

ProductCode-