MsiDeterminePatchSequenceA, fonction (msi.h)

La fonction MsiDeterminePatchSequence prend un ensemble de fichiers de 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 prend en compte les correctifs qui ont déjà été appliqués au produit et 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 cible pour l’ensemble de correctifs. La valeur doit être le GUID ProductCode pour le 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 restreint 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 avoir la valeur 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 par utilisateur non managé, géré par utilisateur ou par ordinateur. Ce paramètre peut être l’une des valeurs suivantes.

Type de contexte Signification
MSIINSTALLCONTEXT_USERMANAGED
Les correctifs sont pris en compte pour toutes les installations gérées par utilisateur du produit pour l’utilisateur spécifié par szUserSid. Un szUserSid null avec ce contexte signifie l’utilisateur actuel.
MSIINSTALLCONTEXT_USERUNMANAGED
Les correctifs sont pris en compte pour toutes les installations non managées par utilisateur pour l’utilisateur spécifié par szUserSid. Un szUserSid null avec ce contexte signifie l’utilisateur actuel.
MSIINSTALLCONTEXT_MACHINE
Les correctifs sont pris en compte pour l’installation par ordinateur. Lorsque dwContext a la valeur MSIINSTALLCONTEXT_MACHINE le paramètre szUserSid doit être null.

[in] cPatchInfo

Nombre de correctifs dans le tableau.

[in] pPatchInfo

Pointeur vers un tableau de structures MSIPATCHSEQUENCEINFO .

Valeur retournée

La fonction MsiDeterminePatchSequence retourne les valeurs suivantes.

Valeur Signification
ERROR_FUNCTION_FAILED
La fonction a échoué d’une manière non couverte dans les autres codes d’erreur.
ERROR_INVALID_PARAMETER
Un argument n’est pas valide.
ERROR_PATCH_NO_SEQUENCE
Aucune séquence valide n’est disponible pour l’ensemble de correctifs.
ERROR_INSTALL_PACKAGE_OPEN_FAILED
Impossible d’ouvrir un package d’installation référencé par chemin d’accès.
ERROR_SUCCESS
Les correctifs ont été correctement triés.
ERROR_FILE_NOT_FOUND
Le fichier .msi est introuvable.
ERROR_PATH_NOT_FOUND
Le chemin d’accès au fichier .msi est introuvable.
ERROR_INVALID_PATCH_XML
Les données de correctif XML ne sont pas valides.
ERROR_INSTALL_PACKAGE_INVALID
Le package d’installation n’était pas valide.
ERROR_ACCESS_DENIED
Un utilisateur qui n’est pas un administrateur a tenté d’appeler la fonction avec un contexte d’un autre utilisateur.
ERROR_BAD_CONFIGURATION
Les données de configuration d’un correctif ou d’un produit inscrit ne sont pas valides.
ERROR_UNKNOWN_PRODUCT
Le GUID ProductCode spécifié n’est pas inscrit.
ERROR_FUNCTION_NOT_CALLED
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 non encore installé avec Windows Installer version 3.0.
ERROR_CALL_NOT_IMPLEMENTED
Cette erreur peut être retournée si la fonction a été appelée à partir d’une action personnalisée ou si MSXML 3.0 n’est pas installé.
ERROR_UNKNOWN_PATCH
Le correctif spécifié est inconnu.

Notes

Les utilisateurs qui ne disposent pas de privilèges d’administrateur peuvent appeler cette fonction uniquement dans leur propre contexte ou de machine. Les utilisateurs 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 le code XML et retourne ERROR_CALL_NOT_IMPLEMENTED si MSXML 3.0 n’est pas installé.

La fonction MsiDeterminePatchSequence définit les membres uStatus et 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 qui peut être appliqué au produit retourne avec un uStatusde 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 uStatusde 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é pour les correctifs qui ont des informations de séquencement circulaire.

Notes

L’en-tête msi.h définit MsiDeterminePatchSequence en tant qu’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. La combinaison 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.

Spécifications

   
Client minimal 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. Pour plus d’informations sur le Service Pack Windows requis par une version de Windows Installer, consultez Configuration requise pour le runtime Windows.
Plateforme cible Windows
En-tête msi.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

MSIPATCHSEQUENCEINFO

MsiDetermineApplicablePatches

Non pris en charge par Windows Installer 2.0 et antérieur

ProductCode