MsiDetermineApplicablePatchesA-Funktion (msi.h)

Die MsiDetermineApplicablePatches-Funktion akzeptiert eine Reihe von Patchdateien, XML-Dateien und XML-Blobs und bestimmt, welche Patches auf ein angegebenes Windows Installer-Paket angewendet werden und in welcher Reihenfolge. Die Funktion kann abgelöste oder veraltete Patches berücksichtigen. Diese Funktion berücksichtigt keine Produkte oder Patches, die auf dem System installiert und 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 gelten, und in welcher Reihenfolge.

[in] cPatchInfo

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

[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
Die Funktion ist in einer Weise fehlgeschlagen, die in den anderen Fehlercodes nicht abgedeckt ist.
ERROR_INVALID_PARAMETER
Ein Argument ist ungültig.
ERROR_PATCH_NO_SEQUENCE
Für den Satz 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 durch pfad 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 WENN MSXML 3.0 nicht installiert ist.

Hinweise

Wenn diese Funktion von einer benutzerdefinierten Aktion aufgerufen wird, schlägt sie fehl und gibt ERROR_CALL_NOT_IMPLEMENTED zurück. Die Funktion erfordert MSXML Version 3.0 zum Verarbeiten von XML und gibt ERROR_CALL_NOT_IMPLEMENTED zurück, wenn MSXML 3.0 nicht installiert ist.

Die MsiDetermineApplicablePatches-Funktion legt die Elemente uStatus und dwOrder jeder MSIPATCHSEQUENCEINFO-Struktur fest, auf die von pPatchInfo verwiesen wird. Jede Struktur enthält Informationen zu einem bestimmten Patch.

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

Wenn die Funktion erfolgreich ist, geben Patches, die von der besten Patchsequenz ausgeschlossen sind, eine MSIPATCHSEQUENCEINFO-Struktur mit einem dwOrder-Wert von -1 zurück. In diesen Fällen weist das Feld uStatus ERROR_SUCCESS auf einen Patch hin, der für das Produkt veraltet oder abgelöst ist. Ein uStatus-Feld mit ERROR_PATCH_TARGET_NOT_FOUND gibt einen Patch an, der für das Produkt nicht angewendet werden kann.

Wenn die Funktion fehlschlägt, gibt die MSIPATCHSEQUENCEINFO-Struktur für jeden Patch einen dwOrder-Wert von -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.

Hinweis

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

   
Unterstützte Mindestversion (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 erforderlichen Windows Service Pack für eine Windows Installer-Version finden Sie unter Windows Installer – Laufzeitanforderungen.
Zielplattform Windows
Kopfzeile msi.h
Bibliothek Msi.lib
DLL Msi.dll

Weitere Informationen

MsiDeterminePatchSequence

In Windows Installer 2.0 und früher nicht unterstützt

ProductCode