Partager via


MsiSetFeatureStateA, fonction (msiquery.h)

La fonction MsiSetFeatureState définit une fonctionnalité à un état spécifié.

Syntaxe

UINT MsiSetFeatureStateA(
  [in] MSIHANDLE    hInstall,
  [in] LPCSTR       szFeature,
  [in] INSTALLSTATE iState
);

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é.

[in] iState

Spécifie l’état à définir. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
INSTALLSTATE_ABSENT
La fonctionnalité n’est pas installée.
INSTALLSTATE_LOCAL
La fonctionnalité est installée sur le lecteur local.
INSTALLSTATE_SOURCE
La fonctionnalité est exécutée à partir de la source, du CD ou du réseau.
INSTALLSTATE_ADVERTISED
La fonctionnalité est annoncée.

Valeur retournée

La fonction MsiSetFeatureState retourne les valeurs suivantes :

Remarques

La fonction MsiSetFeatureState demande une modification de l’état de sélection d’une fonctionnalité dans la table Feature et ses enfants. À son tour, l’état d’action de tous les composants liés aux enregistrements de fonctionnalité modifiés est également mis à jour de manière appropriée, en fonction du nouvel état de sélection de fonctionnalité.

La fonction MsiSetInstallLevel doit être appelée avant d’appeler MsiSetFeatureState.

Lorsque MsiSetFeatureState est appelé, le programme d’installation tente de définir l’état d’action de chaque composant lié à la fonctionnalité spécifiée à l’état spécifié. Toutefois, il existe des situations courantes où la demande ne peut pas être entièrement implémentée. Par exemple, si une fonctionnalité est liée à deux composants, le composant A et le composant B, par le biais de la table FeatureComponents , et que le composant A a l’attribut msidbComponentAttributesLocalOnly et que le composant B a l’attribut msidbComponentAttributesSourceOnly . Dans ce cas, si MsiSetFeatureState est appelé avec un état demandé INSTALLSTATE_LOCAL ou INSTALLSTATE_SOURCE, la demande ne peut pas être entièrement implémentée pour les deux composants. Dans ce cas, les deux composants sont activés, le composant A étant défini sur Local et le composant B défini sur Source.

Si plusieurs fonctionnalités sont liées à un seul composant (un scénario courant), l’état de l’action finale de ce composant est déterminé comme suit :

  • Si au moins une fonctionnalité nécessite l’installation locale du composant, la fonctionnalité est installée avec un état local.
  • Si au moins une fonctionnalité nécessite l’exécution du composant à partir de la source, la fonctionnalité est installée avec un état de source.
  • Si au moins une fonctionnalité nécessite la suppression du composant, l’état de l’action est absent.
Consultez Appel de fonctions de base de données à partir de programmes.

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 MsiSetFeatureState comme un 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.

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