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 de retour
La fonction MsiSetFeatureState retourne les valeurs suivantes :
Remarques
La fonction
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.
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 |