Accès à la session de programme d’installation actuelle à partir d’une action personnalisée
Les actions personnalisées non différées qui appellent des bibliothèques de liens dynamiques ou des scripts 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 de session peut exister pour chaque processus, et les scripts d’action personnalisés ne doivent pas essayer de créer une autre session.
Les actions personnalisées peuvent uniquement ajouter, modifier ou supprimer des lignes, des colonnes ou des tables temporaires dans 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 le disque.
Bibliothèques 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) sont passées à un handle du type MSIHANDLE pour la session active en tant que seul argument du point d’entrée de la DLL nommé dans la colonne cible de la table CustomAction. Étant donné que le programme d’installation fournit ce handle, l’action personnalisée ne doit pas la fermer, par exemple pour recevoir le handle hInstall du programme d’installation, la fonction d’action personnalisée est déclarée comme suit.
UINT __stdcall CustomAction(MSIHANDLE hInstall)
Pour un accès en lecture seule à la base de données actuelle, obtenez le handle de base de données en appelant MsiGetActiveDatabase. Pour plus d’informations, consultez obtention d’un descripteur de base de données.
les actions personnalisées écrites en VBScript ou JScript peuvent accéder à la session d’installation actuelle à l’aide de l' objet session. Le programme d’installation crée un objet de session nommé « session » qui fait 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 .
Étant donné 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 de session , par exemple, les trois lignes suivantes sont équivalentes.
Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1
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é 18.
Actions personnalisées d’exécution différée
Vous ne pouvez pas accéder à la session du programme d’installation en cours ou à 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 d’informations de contexte pour les actions personnalisées d’exécution différée.