Tableau Composant

Le tableau Composant répertorie les composants et contient les colonnes suivantes.

Colonne Type Clé Nullable
Composant Identificateur O N
ComponentId GUID N O
Directory_ Identificateur N N
Attributs Integer N N
Condition Condition N O
KeyPath Identificateur N O

Colonnes

Composant

Identifie l’enregistrement du composant.

Clé du tableau primaire.

ComponentId

Une chaîne GUID unique pour ce composant, cette version et cette langue.

Notez que les lettres de ces GUIDs doivent être en majuscules. Des utilitaires tels que GUIDGEN génèrent des GUIDs contenant des lettres en minuscules. Les lettres en minuscules doivent être remplacées par des majuscules pour créer ces GUIDs de code de composant valides.

Si cette colonne est nulle, le programme d’installation n’inscrit pas le composant et le composant ne peut pas être supprimé ou réparé par le programme d’installation. Ceci peut être intentionnel si le composant est nécessaire uniquement durant l’installation, par exemple une action personnalisée nettoyant les fichiers temporaires ou supprimant un ancien produit. Il peut également être utile pour copier des fichiers de données sur l’ordinateur d’un utilisateur ne nécessitant aucun enregistrement.

Répertoire_

Clé externe d’une entrée dans le tableau Répertoire. Il s'agit d'un nom de propriété dont la valeur contient le chemin d'accès réel, configurable soit par l’action AppSearch, soit par le paramètre par défaut obtenu à partir du tableau Répertoire.

Les développeurs doivent éviter de créer des composants plaçant des fichiers dans l’un des dossiers Profil utilisateur. Ces fichiers ne sont pas disponibles pour tous les utilisateurs en situation multi-utilisateur et peuvent amener le programme d’installation à considérer de manière permanente le composant comme nécessitant une réparation.

Clé externe de la colonne un du tableau Composant.

Attributs

Cette colonne contient un indicateur de bits spécifiant les options d’exécution à distance. Ajoutez le bit indiqué à la valeur totale de la colonne pour y inclure une option.

Notes

Dans le cas d'un fichier .msi téléchargé à partir d'un site web, les indicateurs d’attribut ne doivent pas être définis de manière à permettre à un composant d’être exécuté à partir de la source. Il s’agit d’une limitation de Windows Installer et peut renvoyer un état de fonctionnalité de INSTALLSTATE_BADCONFIG.

Indicateur de bits
msidbComponentAttributesLocalOnly
0
0x0000
Le composant ne peut pas être exécuté à partir de la source. Définissez ce bit pour tous les composants appartenant à une fonctionnalité pour éviter toute exécution de l'élément à partir du réseau ou de la source. Notez que si une fonctionnalité ne comporte aucun composant, les options run-from-source et run-from-my-computer restent disponibles.
msidbComponentAttributesSourceOnly
1
0x0001
Le composant peut être exécuté uniquement à partir de la source. Définissez ce bit pour tous les composants appartenant à une fonctionnalité ceci, pour éviter toute exécution de l'élément à partir du réseau ou de la source. Notez que si une fonctionnalité ne comporte aucun composant, les options run-from-source et run-from-my-computer restent disponibles.
msidbComponentAttributesOptional
2
0x0002
Le composant peut être exécuté localement ou à partir de la source.
msidbComponentAttributesRegistryKeyPath
4
0x0004
Si ce bit est défini, la valeur de la colonne KeyPath est utilisée comme clé dans le tableau du Registre. Si le champ Valeur de l’enregistrement correspondant dans le tableau Registre est nul, le champ Nom de cet enregistrement ne doit pas contenir « + », « - » ou « * ». Pour plus d’informations, consultez la description du champ Nom du tableau du registre.
Il est recommandé de définir ce bit pour les entrées du Registre inscrite dans la ruche HKCU. Ceci garantit la saisie des entrées nécessaires dans le registre HKCU par le programme d'installation lorsque plusieurs utilisateurs se trouvent sur la même machine.
msidbComponentAttributesSharedDllRefCount
8
0x0008
Si ce bit est défini, le programme d’installation incrémente le nombre de références dans le registre DLL partagé du fichier clé du composant. Si ce bit n’est pas défini, le programme d’installation incrémente le nombre de références uniquement si le nombre de références existe déjà.
msidbComponentAttributesPermanent
16
0x0010
Si ce bit est défini, le programme d’installation ne supprime pas le composant durant une désinstallation. Le programme d’installation inscrit un client du système supplémentaire pour le composant figurant dans les paramètres du Registre Windows Installer.
msidbComponentAttributesODBCDataSource
32
0x0020
Si ce bit est défini, la valeur de la colonne KeyPath est utilisée comme clé dans le tableau ODBCDataSource.
msidbComponentAttributesTransitive
64
0x0040
Si ce bit est défini, le programme d’installation réévalue la valeur de l’énoncé figurant dans la colonne Condition lors d’une réinstallation. Si la valeur était précédemment False et remplacée par True, le programme d’installation installe le composant. Si la valeur était précédemment True et remplacée par False, le programme d’installation supprime le composant, et ce, bien que le composant présente d’autres produits en tant que clients.
Ce bit doit être défini uniquement pour les composants transitifs. Consultez l’Utilisation de composants transitifs.
msidbComponentAttributesNeverOverwrite
128
0x0080
Si ce bit est défini, le programme d’installation n’installe pas ou ne réinstalle pas le composant si un fichier de chemin d'accès ou une entrée de registre de chemin d'accès existe déjà pour le composant. L’application s’inscrit elle-même en tant que client du composant.
Utilisez cet indicateur uniquement pour les composants inscrits par le tableau Registre. N’utilisez pas cet indicateur pour les composants inscrits dans les tableaux AppId, Classe, Extension, ProgId, MIME et Verbe.
msidbComponentAttributes64bit
256
0x0100
Définissez ce bit pour le marquer en tant que composant 64 bits. Cet attribut facilite l’installation des packages incluant des composants 32 bits et 64 bits. Si ce bit n’est pas défini, le composant est inscrit en tant que composant 32 bits.
S’il s’agit d’un composant 64 bits remplaçant un composant 32 bits, définissez ce bit et affectez un nouveau GUID dans la colonne ComponentId.
msidbComponentAttributesDisableRegistryReflection
512
0x0200
Définissez ce bit pour désactiver la réflexion du Registre sur toutes les clés du Registre existantes et nouvelles affectées par ce composant. Si ce bit est défini, Windows Installer appelle RegDisableReflectionKey sur chaque clé accessible par le composant. Ce bit est disponible avec Windows Installer version 4.0. Ce bit est ignoré sur les systèmes 32 bits. Ce bit est ignoré sur les versions 64 bits de Windows XP.
Remarque : Les applications Windows 32 bits s’exécutant sur l’émulateur Windows 64 bits (WOW64) font référence à une vue du Registre différente de celle des applications 64 bits. La réflexion du Registre copie certaines valeurs de Registre entre ces deux vues de Registre.
msidbComponentAttributesUninstallOnSupersedence
1 024
0x0400
Définissez ce bit pour un composant situé dans un package de correctifs afin d’éviter de laisser des composants orphelins sur l’ordinateur. Si un correctif ultérieur est installé, marqué par la valeur msidbPatchSequenceSupersedeEarlier dans son tableau MsiPatchSequence pour remplacer le premier correctif, Windows Installer 4.5 et versions ultérieures peut désinscrire et désinstaller les composants marqués par la valeur msidbComponentAttributesUninstallOnSupersedence. Si le composant n’est pas marqué avec ce bit, l’installation d’un correctif de remplacement peut laisser un composant inutilisé sur l’ordinateur.
La définition de la propriété MSIUNINSTALLSUPERSEDEDCOMPONENTS équivaut à la définition de ce bit pour tous les composants.
Windows Installer 4.0 et versions antérieures : la valeur msidbComponentAttributesUninstallOnSupersedence n’est pas prise en charge et elle est ignorée.

msidbComponentAttributesShared
2 048
0x0800
Si un composant est marqué avec cette valeur d’attribut dans au moins un package installé sur le système, le programme d’installation traite le composant comme marqué dans tous les packages. Si un package partageant le composant marqué est désinstallé, Windows Installer 4.5 peut continuer à partager la version la plus élevée du composant sur le système, bien que cette version la plus élevée a été installée par le package désinstallé.
Si la stratégie DisableSharedComponent est définie sur 1, aucun package n’obtient la fonctionnalité de composant partagé activée par ce bit.
Windows Installer 4.0 et versions antérieures : la valeur msidbComponentAttributesUninstallOnSupersedence n’est pas prise en charge et elle est ignorée.

Condition

Cette colonne contient une instruction conditionnelle en mesure de vérifier si un composant est installé. Si la condition est nulle ou prend la valeur true, le composant est alors activé. Si la condition prend la valeur False, le composant est alors désactivé et n’est pas installé.

Le champ Condition active ou désactive un composant uniquement durant l’action CostFinalize. Pour activer ou désactiver un composant après CostFinalize, vous devez utiliser une action personnalisée ou doAction ControlEvent pour appeler MsiSetComponentState.

Notez que, à l’exception d’un bit transitif dans la colonne Attributs défini pour un composant, le composant reste activé une fois installé, et ce, bien que l’instruction conditionnelle dans la colonne Condition prend ultérieurement la valeur False lors d’une installation de maintenance ultérieure du produit.

La colonne Condition du tableau Composant accepte les expressions conditionnelles contenant des références relatives aux états d’installation des fonctionnalités et des composants. Pour plus d’informations sur la syntaxe des instructions conditionnelles, consultez Syntaxe des instructions conditionnelles.

KeyPath

La valeur du chemin d’accès de clé pointe vers un fichier ou dossier spécifique appartenant au composant utilisé par le programme d’installation pour détecter le composant. Deux composants ne peuvent pas partager la même valeur du chemin de clé. La valeur de cette colonne est également le chemin d’accès renvoyé par la fonction MsiGetComponentPath .

Si la valeur n’est pas nulle, KeyPath représente une clé primaire figurant dans les tableaux Registre, ODBCDataSource ou Richier selon la valeur Attribut. Si KeyPath présente la valeur nulle, le dossier de la colonne Répertoire_ est utilisé comme chemin de la clé.

Puisque les dossiers créés par le programme d’installation sont supprimés une fois vides, vous devez créer une entrée dans le tableau CreateFolder pour installer un composant constitué d’un dossier vide.

Notez que si un composant Windows Installer contient un fichier ou une clé de Registre protégé par la protection des ressources Windows (WRP) ou un fichier protégé par la protection de fichiers Windows (WFP), cette ressource doit être utilisée dans le composant comme un KeyPath. Dans ce cas, Windows Installer ne procède pas à l'installation, ni à la mise à jour, ou à la suppression du composant. Vous ne devez pas inclure de ressources protégées dans un package d’installation. Au lieu de cela, vous devez utiliser les mécanismes de remplacement des ressources pris en charge pour protéger les ressources Windows. Pour plus d’informations, consultez l’utilisation de Windows Installer et de la Protection des ressources Windows.

Notes

Pour une présentation de la relation entre les composants et fonctionnalités, consultez le tableau des fonctionnalités.

Le programme d’installation effectue le suivi des DLL partagées indépendamment du nombre de références de DLL partagées dans le Registre. S’il existe un nombre de références pour une DLL partagée dans le Registre, le programme d’installation systématiquement incrémente le nombre lors de l’installation du fichier et le décrémente lors de sa désinstallation. Si msidbComponentAttributesSharedDllRefCount n’est pas défini et que le nombre de références n’existe pas déjà, le programme d’installation n’en crée aucun. Notez que le nombre de références SharedDLLs dans le Registre est incrémenté pour tous les fichiers installés dans le dossier du système.

Si msidbComponentAttributesSharedDllRefCount n’est pas défini, une autre application peut supprimer le composant bien qu’il soit encore nécessaire. Pour voir de quelle manière ceci peut se produire, envisagez le scénario suivant :

  • Une application utilisant le programme d’installation installe un composant partagé.
  • Le bit msidbComponentAttributesSharedDllRefCount n’est pas défini et il n’y a aucun compte de référence. Par conséquent, le programme d’installation ne commence donc pas à compter les références.
  • Une application héritée partageant ce composant et n’utilisant pas le programme d’installation est installée.
  • L’application héritée crée et incrémente un compte de références pour le composant partagé.
  • L’application héritée est désinstallée.
  • Le compte de références pour le composant partagé est décrémenté à zéro et le composant est supprimé.
  • L’application utilisant le programme d’installation n’a plus accès au composant.

Pour éviter ce comportement, définissez msidbComponentAttributesSharedDllRefCount.

Notez que les composants des services système ne doivent pas être spécifiés en tant qu’exécution à partir de la source sans être spécifiquement conçus pour une telle utilisation. Pour plus d’informations, consultez le tableau ServiceInstall.

Notez que les attributs permettant l’installation à partir de la source ne doivent jamais être définis pour des composants contenant des bibliothèques de liens dynamiques placés dans le dossier du système. En effet, si l’état d’installation du composant est défini comme excécuté à partir de la source, à la suite d’une fonctionnalité ou d’un réglage dans l’interface utilisateur, les appels ultérieurs à LoadLibrary sur la DLL échouent.

Consultez également Contrôle des états de la sélection des fonctionnalités.

Validation

ICE02
ICE03
ICE06
ICE07
ICE08
ICE09
ICE18
ICE19
ICE21
ICE30
ICE32
ICE35
ICE38
ICE41
ICE42
ICE43
ICE46
ICE50
ICE54
ICE57
ICE59
ICE62
ICE67
ICE76
ICE79
ICE80
ICE83
ICE86
ICE88
ICE91
ICE92
ICE97