Obtention d’informations de contexte pour les actions personnalisées d’exécution différée

Étant donné que le script d’installation peut être exécuté en dehors de la session d’installation dans laquelle il a été écrit, la session peut ne plus exister pendant l’exécution du script d’installation. Dans ce cas, le descripteur et le jeu des propriétés de session d’origine pendant la séquence d’installation ne sont pas disponibles pour une action personnalisée d’exécution différée. Toutes les fonctions qui nécessitent un descripteur de session sont limitées à quelques méthodes qui peuvent récupérer des informations de contexte, sinon, les propriétés nécessaires lors de l’exécution du script doivent être écrites dans le script d’installation. Par exemple, les actions personnalisées différées qui appellent des bibliothèques de liens dynamiques (DLL) passent un descripteur qui ne peut être utilisé que pour obtenir une quantité très limitée d’informations. Les fonctions qui ne nécessitent pas de descripteur de session sont accessibles à partir d’une action personnalisée différée.

Les actions personnalisées d’exécution différée sont limitées à l’appel uniquement des fonctions suivantes nécessitant un descripteur.

Fonction Description
MsiGetProperty Prend en charge un ensemble limité de propriétés lorsqu’elles sont utilisées avec des actions personnalisées d’exécution différée : la propriété CustomActionData, la propriété ProductCode et la propriété UserSID. Les actions personnalisées de validation ne peuvent pas utiliser la fonction MsiGetProperty pour obtenir la propriété ProductCode. Les actions personnalisées de validation peuvent utiliser la propriété CustomActionData pour obtenir le code de produit.
MsiFormatRecord Prend en charge un ensemble limité de propriétés lorsqu’elles sont utilisées avec des actions personnalisées d’exécution différée : les propriétés CustomActionData et ProductCode.
MsiGetMode Lorsqu’il est appelé à partir d’actions personnalisées d’exécution différée, de validation d’actions personnalisées ou de restauration d’actions personnalisées, MsiGetMode retourne True ou False lorsqu’il lui est demandé de vérifier les paramètres de mode MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT ou MSIRUNMODE_ROLLBACK. Les demandes de vérification de tout autre paramètre de mode d’exécution à partir d’une action personnalisée différée, de validation ou de restauration retourne False.
MsiGetLanguage ID de langue numérique du produit actuel. Les actions personnalisées de validation ne peuvent pas utiliser la fonction MsiGetLanguage. Les actions personnalisées de validation peuvent utiliser la propriété CustomActionData pour obtenir l’ID de langue numérique.
MsiProcessMessage Traite les messages d’erreur ou de progression de l’action personnalisée.

 

Une action personnalisée écrite en JScript ou VBScript nécessite l’objet de Session de l’installation. Il est de type Objet de session, et le programme d’installation l’attache au script avec le nom « Session ». Étant donné que l’objet Session n’existe peut-être pas lors d’une restauration d’installation, une action personnalisée différée écrite dans un script doit utiliser l’une des méthodes ou propriétés suivantes de l’objet Session pour récupérer son contexte.

Nom Description
Mode, propriété Retourne la valeur True pour MSIRUNMODE_SCHEDULED uniquement.
Propriété Property (Objet de session) Renvoie la propriété CustomActionData, la propriété ProductCode ou la propriété UserSID.
Propriété Language (Objet de session) Retourne l’ID de langue numérique de la session d’installation.
Méthode Message Appelé pour gérer les erreurs et la progression.
Propriété Installer Retourne l’objet parent, qui est utilisé pour les fonctions de non session telles que l’accès au Registre et la gestion de la configuration du programme d’installation.

 

Les valeurs de propriété qui sont définies au moment où la séquence d’installation est traitée en script peuvent être indisponibles au moment de l’exécution du script. Seul l’ensemble limité de propriétés suivant est toujours accessible aux actions personnalisées pendant l’exécution du script.

Nom de la propriété Description
CustomActionData Valeur au moment où l’action personnalisée est traitée dans une table séquentielle. La propriété CustomActionData n’est disponible que pour les actions personnalisées d’exécution différée. Les actions personnalisées immédiates n’ont pas accès à cette propriété.
ProductCode Code unique pour le produit, une chaîne GUID.
UserSID Défini par le programme d’installation sur l’identificateur de sécurité (SID) de l’utilisateur.

 

Si d’autres données de propriété sont requises par l’action personnalisée d’exécution différée, leurs valeurs doivent être stockées dans le script d’installation. Pour ce faire, utilisez une deuxième action personnalisée.

Écrire la valeur d’une propriété dans le script d’installation à utiliser pendant une action personnalisée d’exécution différée

  1. Insérez une petite action personnalisée dans la séquence d’installation qui définit la propriété d’intérêt sur une propriété portant le même nom que l’action personnalisée d’exécution différée. Par exemple, si la clé primaire de l’action personnalisée d’exécution différée est « MyAction », définissez une propriété nommée « MyAction » sur la propriété X que vous devez récupérer. Vous devez définir la propriété « MyAction » dans la séquence d’installation avant l’action personnalisée « MyAction ». Bien que n’importe quel type d’action personnalisée puisse définir les données de contexte, la méthode la plus simple consiste à utiliser une action personnalisée d’attribution de propriété (par exemple, Type d’action personnalisée 51).
  2. Au moment où la séquence d’installation est traitée, le programme d’installation écrit la valeur de la propriété X dans le script d’exécution comme valeur de la propriété CustomActionData.

À propos des propriétés

Utilisation de propriétés

Informations de référence sur les propriétés