MsiDeterminePatchSequenceA, fonction (msi.h)
La fonction MsiDeterminePatchSequence prend un ensemble de fichiers correctifs, de fichiers XML et d’objets blob XML et détermine la meilleure séquence d’application pour les correctifs sur un produit installé spécifié. Cette fonction compte les correctifs qui ont déjà été appliqués au produit et les comptes pour les correctifs obsolètes et remplacés.
Syntaxe
UINT MsiDeterminePatchSequenceA(
[in] LPCSTR szProductCode,
[in, optional] LPCSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] DWORD cPatchInfo,
[in] PMSIPATCHSEQUENCEINFOA pPatchInfo
);
Paramètres
[in] szProductCode
Produit qui est la cible de l’ensemble de correctifs. La valeur doit être le GUID ProductCode du produit.
[in, optional] szUserSid
Chaîne terminée par null qui spécifie un IDENTIFICATEUR de sécurité (SID) d’un utilisateur. Ce paramètre limite le contexte d’énumération pour ce compte d’utilisateur. Ce paramètre ne peut pas être les chaînes SID spéciales « S-1-1-0 » (tout le monde) ou « S-1-5-18 » (système local). Pour le contexte de l’ordinateur dwContext est défini sur MSIINSTALLCONTEXT_MACHINE et szUserSid doit être NULL. Pour le contexte utilisateur actuel szUserSid peut être null et dwContext peut être défini sur MSIINSTALLCONTEXT_USERMANAGED ou MSIINSTALLCONTEXT_USERUNMANAGED.
[in] dwContext
Limite l’énumération à un contexte géré par utilisateur, géré par utilisateur ou par ordinateur. Ce paramètre peut être l’une des valeurs suivantes.
[in] cPatchInfo
Nombre de correctifs dans le tableau.
[in] pPatchInfo
Pointeur vers un tableau de structures MSIPATCHSEQUENCEINFO.
Valeur de retour
La fonction MsiDeterminePatchSequence retourne les valeurs suivantes.
Valeur | Signification |
---|---|
|
La fonction a échoué d’une manière non couverte dans les autres codes d’erreur. |
|
Un argument n’est pas valide. |
|
Aucune séquence valide n’est disponible pour l’ensemble de correctifs. |
|
Impossible d’ouvrir un package d’installation référencé par chemin d’accès. |
|
Les correctifs ont été correctement triés. |
|
Le fichier .msi est introuvable. |
|
Le chemin d’accès au fichier .msi est introuvable. |
|
Les données de correctif XML ne sont pas valides. |
|
Le package d’installation n’était pas valide. |
|
Un utilisateur qui n’est pas un administrateur a tenté d’appeler la fonction avec un contexte d’un autre utilisateur. |
|
Les données de configuration d’un correctif ou d’un produit inscrit ne sont pas valides. |
|
Le ProductCode GUID spécifié n’est pas inscrit. |
|
Windows Installer version 3.0 est nécessaire pour déterminer la meilleure séquence de correctifs. La fonction a été appelée avec szProductCode pas encore installée avec Windows Installer version 3.0. |
|
Cette erreur peut être retournée si la fonction a été appelée à partir d’un action personnalisée ou si MSXML 3.0 n’est pas installé. |
|
Le correctif spécifié est inconnu. |
Remarques
Les utilisateurs qui n’ont pas de privilèges d’administrateur peuvent appeler cette fonction uniquement dans leur propre contexte ou ordinateur. Les utilisateurs qui sont administrateurs peuvent l’appeler pour d’autres utilisateurs.
Si cette fonction est appelée à partir d’une action personnalisée, elle échoue et retourne ERROR_CALL_NOT_IMPLEMENTED. La fonction nécessite MSXML version 3.0 pour traiter xml et retourne ERROR_CALL_NOT_IMPLEMENTED si MSXML 3.0 n’est pas installé.
La fonction MsiDeterminePatchSequence définit les uStatus et membres dwOrder de chaque structure MSIPATCHSEQUENCEINFO pointée par pPatchInfo. Chaque structure contient des informations sur un correctif particulier.
Si la fonction réussit, la structure MSIPATCHSEQUENCEINFO de chaque correctif pouvant être appliqué au produit retourne un uStatus de ERROR_SUCCESS et un dwOrder supérieur ou égal à zéro. Les valeurs de dwOrder supérieures ou égales à zéro indiquent la meilleure séquence d’application pour les correctifs commençant par zéro.
Si la fonction réussit, les correctifs exclus de la meilleure séquence de mise à jour corrective retournent une structure MSIPATCHSEQUENCEINFO avec un dwOrder égal à -1. Dans ce cas, un champ uStatus de ERROR_SUCCESS indique un correctif obsolète ou remplacé pour le produit. Un champ uStatus de ERROR_PATCH_TARGET_NOT_FOUND indique un correctif inapplicable au produit.
Si la fonction échoue, la structure MSIPATCHSEQUENCEINFO pour chaque correctif retourne un dwOrder égal à -1. Dans ce cas, les champs uStatus peuvent contenir des erreurs avec plus d’informations sur les correctifs individuels. Par exemple, ERROR_PATCH_NO_SEQUENCE est retournée pour les correctifs qui ont des informations de séquencement circulaire.
Note
L’en-tête msi.h définit MsiDeterminePatchSequence comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Consultez la configuration requise de Windows Installer Run-Time pour plus d’informations sur le service pack Windows minimal requis par une version de Windows Installer. |
plateforme cible | Windows |
d’en-tête | msi.h |
bibliothèque | Msi.lib |
DLL | Msi.dll |
Voir aussi
non pris en charge dans Windows Installer 2.0 et versions antérieures