Partager via


Accès à la session actuelle du programme d’installation à partir d’une action personnalisée

Les actions personnalisées non différées qui appellent des scripts ou des bibliothèques de liens dynamiques peuvent accéder à une installation en cours d’exécution pour interroger ou modifier les attributs de la session d’installation actuelle. Un seul objet Session peut exister pour chaque processus, et les scripts d’action personnalisée ne doivent pas tenter de créer une autre session.

Les actions personnalisées peuvent uniquement ajouter, modifier ou supprimer des lignes, des colonnes ou des tables temporaires d’une base de données. Les actions personnalisées ne peuvent pas modifier les données persistantes dans une base de données, par exemple, les données qui font partie de la base de données stockée sur disque.

Bibliothèque de liens dynamiques

Pour accéder à une installation en cours d’exécution, les actions personnalisées qui appellent des bibliothèques de liens dynamiques (DLL) reçoivent un descripteur de type MSIHANDLE pour la session actuelle comme seul argument du point d’entrée DLL nommé dans la colonne Target de la table CustomAction. Comme le programme d’installation fournit ce descripteur, l’action personnalisée ne doit pas le fermer. Par exemple, pour recevoir le descripteur hInstall du programme d’installation, la fonction d’action personnalisée est déclarée de la façon suivante.

UINT __stdcall CustomAction(MSIHANDLE hInstall)

Pour un accès en lecture seule à la base de données actuelle, obtenez le descripteur de base de données en appelant MsiGetActiveDatabase. Pour plus d’informations, consultez Obtention d’un descripteur de base de données.

Scripts

Les actions personnalisées écrites en VBScript ou JScript peuvent accéder à la session d’installation actuelle en utilisant l’objet Session. Le programme d’installation crée un objet Session nommé « Session » qui référence l’installation actuelle. Pour un accès en lecture seule à la base de données actuelle, utilisez la propriété Database de l’objet Session.

Parce qu’un script est exécuté à partir du contexte de l’objet Session, il n’est pas toujours nécessaire de qualifier entièrement les propriétés et les méthodes. Dans l’exemple suivant, quand vous utilisez VBScript, la référence Me peut remplacer l’objet Session, par exemple, les trois lignes suivantes sont équivalentes.

Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1

Fichiers exécutables

Vous ne pouvez pas accéder à la session de programme d’installation actuelle à partir d’actions personnalisées qui appellent des fichiers exécutables lancés avec une ligne de commande, par exemple, Type d’action personnalisée 2 et Type d’action personnalisée 18.

Actions personnalisées d’exécution différée

Vous ne pouvez pas accéder à la session de programme d’installation actuelle ni à toutes les données de propriété à partir d’une action personnalisée d’exécution différée. Pour plus d’informations, consultez Obtention des informations de contexte pour les actions personnalisées d’exécution différée.

Accès à une base de données ou à une session à partir d’une action personnalisée