Partager via


MsiGetFeatureValidStatesA, fonction (msiquery.h)

La fonction MsiGetFeatureValidStates retourne un état d’installation valide.

Syntaxe

UINT MsiGetFeatureValidStatesA(
  [in]  MSIHANDLE hInstall,
  [in]  LPCSTR    szFeature,
  [out] LPDWORD   lpInstallStates
);

Paramètres

[in] hInstall

Gérez l’installation fournie à une action personnalisée DLL ou obtenue via MsiOpenPackage, MsiOpenPackageEx ou MsiOpenProduct.

[in] szFeature

Spécifie le nom de la fonctionnalité.

[out] lpInstallStates

Reçoit l’emplacement pour contenir les états d’installation valides. Pour chaque état d’installation valide, le programme d’installation définit pInstallState sur une combinaison des valeurs suivantes. Ce paramètre ne doit pas être null.

Valeur décimale Signification
2
INSTALLSTATE_ADVERTISED
La fonctionnalité peut être annoncée.
4
INSTALLSTATE_ABSENT
La fonctionnalité peut être absente.
8
INSTALLSTATE_LOCAL
La fonctionnalité peut être installée sur le lecteur local.
16
INSTALLSTATE_SOURCE
La fonctionnalité peut être configurée pour s’exécuter à partir de la source, du CD-ROM ou du réseau.
32
INSTALLSTATE_DEFAULT
La fonctionnalité peut être configurée pour utiliser l’emplacement par défaut : local ou source.

Valeur retournée

La fonction MsiGetFeatureValidStates retourne les valeurs suivantes :

Remarques

Consultez Appel de fonctions de base de données à partir de programmes.

La fonction MsiGetFeatureValidStates détermine la validité de l’état en interrogeant tous les composants liés à la fonctionnalité spécifiée sans tenir compte de l’état actuel installé d’un composant.

Les états valides possibles pour une fonctionnalité sont déterminés comme suit :

  • Si la fonctionnalité ne contient pas de composants, INSTALLSTATE_LOCAL et INSTALLSTATE_SOURCE sont des états valides pour la fonctionnalité.
  • Si au moins un composant de la fonctionnalité a un attribut de msidbComponentAttributesLocalOnly ou msidbComponentAttributesOptional, INSTALLSTATE_LOCAL est un état valide pour la fonctionnalité.
  • Si au moins un composant de la fonctionnalité a un attribut de msidbComponentAttributesSourceOnly ou msidbComponentAttributesOptional, INSTALLSTATE_SOURCE est un état valide pour la fonctionnalité.
  • Si un fichier d’un composant qui appartient à la fonctionnalité est corrigé ou à partir d’une source compressée, INSTALLSTATE_SOURCE n’est pas inclus comme état valide pour la fonctionnalité.
  • INSTALLSTATE_ADVERTISE n’est pas un état valide si la fonctionnalité interdit la publication (msidbFeatureAttributesDisallowAdvertise) ou si la fonctionnalité nécessite la prise en charge de la plateforme pour la publication (msidbFeatureAttributesNoUnsupportedAdvertise) et si la plateforme ne la prend pas en charge.
  • INSTALLSTATE_ABSENT est un état valide pour la fonctionnalité si ses attributs n’incluent pas msidbFeatureAttributesUIDisallowAbsent.
  • Les états valides pour les fonctionnalités enfants marquées pour suivre la fonctionnalité parente (msidbFeatureAttributesFollowParent) sont basés sur l’action ou l’état installé de la fonctionnalité parente.
Après avoir appelé MsiGetFeatureValidStates , une instruction conditionnelle peut ensuite être utilisée pour tester les états d’installation valides d’une fonctionnalité. Par exemple, l’appel suivant à MsiGetFeatureValidStates obtient l’état d’installation de Feature1.
MsiGetFeatureValidStates(hProduct, "Feature1", &dwValidStates);

Si Feature1 a des attributs de valeur 0 (privilégiez local) et Feature1 a un composant avec des attributs de valeur 0 (local uniquement), la valeur de dwValidStates après l’appel est 14. Cela indique que INSTALLSTATE_LOCAL, INSTALLSTATE_ABSENT et INSTALLSTATE_ADVERTISED sont des états valides pour Feature1. L’instruction conditionnelle suivante prend la valeur True si local est un état valide pour cette fonctionnalité.

( ( dwValidStates & ( 1 << INSTALLSTATE_LOCAL ) ) == ( 1 << INSTALLSTATE_LOCAL ) )

Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.

Notes

L’en-tête msiquery.h définit MsiGetFeatureValidStates 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.

Configuration requise

Condition requise Valeur
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. Windows Installer sur Windows Server 2003 ou Windows XP
Plateforme cible Windows
En-tête msiquery.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Fonctions de sélection du programme d’installation

Passage de Null en tant qu’argument des fonctions Windows Installer