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 n’existe peut-être plus pendant l’exécution du script d’installation. Dans ce cas, le handle de session d’origine et les propriétés définies 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 requièrent 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 pendant 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 handle 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 des fonctions suivantes qui requièrent un handle.
| Fonction | Description |
|---|---|
| MsiGetProperty | Prend en charge un ensemble limité de propriétés lorsqu’il est utilisé 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 du produit. |
| MsiFormatRecord | Prend en charge un ensemble limité de propriétés lorsqu’il est utilisé avec des actions personnalisées d’exécution différée: les propriétés CustomActionData et ProductCode. |
| MsiGetMode | Lorsqu’elles sont appelées à partir d' actions personnalisées d’exécution différée, de validation des actions personnaliséesou de restaurations personnalisées, MsiGetMode retourne true ou false quand il est demandé de vérifier les paramètres de mode MSIRUNMODE _ , MSIRUNMODE _ Commit ou MSIRUNMODE _ Rollback. Les demandes de vérification de tous les autres paramètres de mode d’exécution d’une action personnalisée différée, de validation ou d’annulation renvoient la valeur 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 récupérer 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 requiert l’objet de Session d’installation. Il s’agit de l' objet de session de type 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 de l’installation, une action personnalisée différée écrite dans le 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 _ planifié uniquement. |
| Propriété Property (objet session) | Retourne la propriété CustomActionData, la propriété ProductCode ou la propriété UserSid . |
| Propriété Language (objet session) | Retourne l’ID de langue numérique de la session d’installation. |
| Message, méthode | Appelé pour gérer les erreurs et la progression. |
| Installer (propriété) | Retourne l’objet parent, qui est utilisé pour les fonctions qui ne sont pas des sessions, 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 du traitement de la séquence d’installation dans le script peuvent ne pas être disponibles au moment de l’exécution du script. Seul l’ensemble de propriétés limité 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 la table de séquences. La propriété CustomActionData est uniquement disponible 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 du 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, vous pouvez utiliser une deuxième action personnalisée.
Pour écrire la valeur d’une propriété dans le script d’installation à utiliser pendant une action personnalisée d’exécution différée
- Insérez une petite action personnalisée dans la séquence d’installation qui définit la propriété d’intérêt pour 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 tout 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’assignation de propriété (par exemple, le type d’action personnalisé 51).
- 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.