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.
[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 |
---|---|
|
Die Funktion ist in einer Weise fehlgeschlagen, die in den anderen Fehlercodes nicht abgedeckt ist. |
|
Ein Argument ist ungültig. |
|
Für den Satz von Patches wurde keine gültige Sequenz gefunden. |
|
Ein Installationspaket, auf das durch pfad 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, die 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 WENN MSXML 3.0 nicht installiert ist. |
|
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 |