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.
[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 |
---|---|
|
Fehler bei der Funktion, die nicht in den anderen Fehlercodes behandelt wird. |
|
Ein Argument ist ungültig. |
|
Für die Reihe von Patches wurde keine gültige Sequenz gefunden. |
|
Ein Installationspaket, auf das anhand des Pfads verwiesen wird, kann nicht geöffnet werden. |
|
Die Patches wurden erfolgreich sortiert. |
|
Die .msi Datei wurde nicht gefunden. |
|
Der Pfad zur .msi Datei wurde nicht gefunden. |
|
Die XML-Patchdaten sind ungültig. |
|
Das Installationspaket war ungültig. |
|
Ein Benutzer, der kein Administrator ist, hat versucht, die Funktion mit einem Kontext eines anderen Benutzers aufzurufen. |
|
Die Konfigurationsdaten für einen registrierten Patch oder ein registriertes Produkt sind ungültig. |
|
Die angegebene ProductCode- GUID ist nicht registriert. |
|
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. |
|
Dieser Fehler kann zurückgegeben werden, wenn die Funktion von einer benutzerdefinierten Aktion aufgerufen wurde oder MSXML 3.0 nicht installiert ist. |
|
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
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
in Windows Installer 2.0 und früheren nicht unterstützt