Share via


MsiDeterminePatchSequenceA-Funktion (msi.h)

Die MsiDeterminePatchSequence-Funktion akzeptiert eine Reihe von Patchdateien, XML-Dateien und XML-Blobs und bestimmt die beste Anwendungssequenz für die Patches für ein angegebenes installiertes Produkt. Mit dieser Funktion werden Patches, die bereits auf das Produkt angewendet wurden, sowie veraltete und abgelöste Patches übernommen.

Syntax

UINT MsiDeterminePatchSequenceA(
  [in]           LPCSTR                 szProductCode,
  [in, optional] LPCSTR                 szUserSid,
  [in]           MSIINSTALLCONTEXT      dwContext,
  [in]           DWORD                  cPatchInfo,
  [in]           PMSIPATCHSEQUENCEINFOA pPatchInfo
);

Parameter

[in] szProductCode

Das Produkt, das das Ziel für die Gruppe von Patches ist. Der Wert muss die ProductCode-GUID für das Produkt sein.

[in, optional] szUserSid

Null-terminierte Zeichenfolge, die eine Sicherheits-ID (SID) eines Benutzers angibt. Dieser Parameter schränkt den Kontext der Enumeration für dieses Benutzerkonto ein. Dieser Parameter darf nicht die speziellen SID-Zeichenfolgen "S-1-1-0" (jeder) oder "S-1-5-18" (lokales System) sein. Für den Computerkontext ist dwContext auf MSIINSTALLCONTEXT_MACHINE und szUserSid muss NULL sein. Für den aktuellen Benutzerkontext kann szUserSid NULL und dwContext auf MSIINSTALLCONTEXT_USERMANAGED oder MSIINSTALLCONTEXT_USERUNMANAGED festgelegt werden.

[in] dwContext

Schränkt die Enumeration auf einen benutzerunabhängigen, benutzerseitig verwalteten oder pro Computer verwalteten Kontext ein. Bei diesem Parameter kann es sich um einen der folgenden Werte handeln.

Typ des Kontexts Bedeutung
MSIINSTALLCONTEXT_USERMANAGED
Patches werden für alle benutzerspezifischen verwalteten Installationen des Produkts für den von szUserSid angegebenen Benutzer berücksichtigt. Ein null szUserSid mit diesem Kontext bedeutet den aktuellen Benutzer.
MSIINSTALLCONTEXT_USERUNMANAGED
Patches werden für alle benutzerspezifischen nicht verwalteten Installationen für den von szUserSid angegebenen Benutzer berücksichtigt. Ein null szUserSid mit diesem Kontext bedeutet den aktuellen Benutzer.
MSIINSTALLCONTEXT_MACHINE
Patches werden für die Installation pro Computer berücksichtigt. Wenn dwContext auf MSIINSTALLCONTEXT_MACHINE muss der szUserSid-Parameter NULL sein.

[in] cPatchInfo

Die Anzahl der Patches im Array.

[in] pPatchInfo

Zeiger auf ein Array von MSIPATCHSEQUENCEINFO-Strukturen .

Rückgabewert

Die MsiDeterminePatchSequence-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_INSTALL_PACKAGE_OPEN_FAILED
Ein Installationspaket, auf das durch pfad verwiesen wird, kann nicht geöffnet werden.
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_INVALID
Das Installationspaket war ungültig.
ERROR_ACCESS_DENIED
Ein Benutzer, der kein Administrator ist, hat versucht, die Funktion mit einem Kontext eines anderen Benutzers aufzurufen.
ERROR_BAD_CONFIGURATION
Die Konfigurationsdaten für einen registrierten Patch oder ein registriertes Produkt sind ungültig.
ERROR_UNKNOWN_PRODUCT
Die angegebene ProductCode-GUID ist nicht registriert.
ERROR_FUNCTION_NOT_CALLED
Windows Installer Version 3.0 ist erforderlich, um die beste Patchsequenz zu ermitteln. Die Funktion wurde mit szProductCode aufgerufen, die noch nicht mit Windows Installer Version 3.0 installiert wurde.
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.
ERROR_UNKNOWN_PATCH
Der angegebene Patch ist unbekannt.

Hinweise

Benutzer, die nicht über Administratorrechte verfügen, können diese Funktion nur in ihrem eigenen Oder Computerkontext aufrufen. Benutzer, die Administratoren sind, können sie für andere Benutzer aufrufen.

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 MsiDeterminePatchSequence-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 uStatusvon 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 uStatusERROR_SUCCESS auf einen Patch hin, der für das Produkt veraltet oder abgelöst ist. Ein uStatus-Feldvon 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 MsiDeterminePatchSequence 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. Informationen zum minimal 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

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

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

ProductCode