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, MsiOpenPackageExou MsiOpenProduct.

[in] szFeature

Spécifie le nom de la fonctionnalité.

[in] iState

Spécifie l’état à définir. Ce paramètre peut être l’une des 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 de retour

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 fonctionnalité et ses enfants. À son tour, l’état d’action de tous les composants liés aux enregistrements de fonctionnalités modifiés est également mis à jour de manière appropriée, en fonction de l’état de sélection de la nouvelle 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 lorsque 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, via la table FeatureComponents, et le composant A a l’attribut msidbComponentAttributesLocalOnly et le composant B a l’attribut msidbComponentAttributesSourceOnly. Dans ce cas, si MsiSetFeatureState est appelé avec un état demandé de INSTALLSTATE_LOCAL ou de INSTALLSTATE_SOURCE, la requête ne peut pas être entièrement implémentée pour les deux composants. Dans ce cas, les deux composants sont activés, avec le composant A défini sur Local et le composant B défini sur Source.

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

  • Si au moins une fonctionnalité nécessite que le composant soit installé localement, la fonctionnalité est installée avec un état local.
  • Si au moins une fonctionnalité nécessite que le composant soit exécuté à 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 d’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.

Note

L’en-tête msiquery.h définit MsiSetFeatureState 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. Windows Installer sur Windows Server 2003 ou Windows XP
plateforme cible Windows
d’en-tête msiquery.h
bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Fonctions de sélection du programme d’installation