Freigeben über


MsiDeterminePatchSequenceW-Funktion (msi.h)

Die MsiDeterminePatchSequence--Funktion verwendet eine Reihe von Patchdateien, XML-Dateien und XML-Blobs und bestimmt die beste Abfolge der Anwendung für die Patches für ein angegebenes installiertes Produkt. Diese Funktion enthält Patches, die bereits auf das Produkt angewendet wurden, und konten für veraltete und abgelöste Patches.

Syntax

UINT MsiDeterminePatchSequenceW(
  [in]           LPCWSTR                szProductCode,
  [in, optional] LPCWSTR                szUserSid,
  [in]           MSIINSTALLCONTEXT      dwContext,
  [in]           DWORD                  cPatchInfo,
  [in]           PMSIPATCHSEQUENCEINFOW 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-beendete Zeichenfolge, die eine Sicherheits-ID (SID) eines Benutzers angibt. Dieser Parameter schränkt den Kontext der Aufzählung 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 dwContext auf MSIINSTALLCONTEXT_MACHINE festgelegt ist und szUserSid-NULL-sein muss. Für den aktuellen Benutzerkontext kann szUserSid null sein, und dwContext- auf MSIINSTALLCONTEXT_USERMANAGED oder MSIINSTALLCONTEXT_USERUNMANAGEDfestgelegt werden kann.

[in] dwContext

Beschränkt die Enumeration auf einen benutzerspezifischen, nicht verwalteten, benutzerbasierten oder computerspezifischen Kontext. Dieser Parameter kann ein beliebiger der folgenden Werte sein.

Typ des Kontexts Bedeutung
MSIINSTALLCONTEXT_USERMANAGED
Patches gelten für alle vom Benutzer verwalteten Installationen des Produkts für den benutzerspezifischen Benutzer, der durch szUserSidangegeben wird. Eine NULL-szUserSid- mit diesem Kontext bedeutet den aktuellen Benutzer.
MSIINSTALLCONTEXT_USERUNMANAGED
Patches werden für alle nicht verwalteten Installationen pro Benutzer für den von szUserSidangegebenen Benutzer berücksichtigt. Eine NULL-szUserSid- mit diesem Kontext bedeutet den aktuellen Benutzer.
MSIINSTALLCONTEXT_MACHINE
Patches gelten für die Installation pro Computer. Wenn dwContext- auf MSIINSTALLCONTEXT_MACHINEszUserSid- Parameter festgelegt ist, muss 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
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_INSTALL_PACKAGE_OPEN_FAILED
Ein Installationspaket, auf das anhand des Pfads 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, 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 MSXML 3.0 nicht installiert ist.
ERROR_UNKNOWN_PATCH
Der angegebene Patch ist unbekannt.

Bemerkungen

Benutzer, die nicht über Administratorrechte verfügen, können diese Funktion nur in ihrem eigenen oder computereigenen Kontext 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_IMPLEMENTEDzurück. Die Funktion erfordert, dass MSXML, Version 3.0, XML verarbeitet und ERROR_CALL_NOT_IMPLEMENTED zurückgibt, wenn MSXML 3.0 nicht installiert ist.

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

Wenn die Funktion erfolgreich ist, die MSIPATCHSEQUENCEINFO-Struktur jedes Patches, die auf das Produkt angewendet werden kann, mit einer 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 verwendbar 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 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

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. 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

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

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

ProductCode-