Séquencement des actions personnalisées
Les actions personnalisées sont planifiées dans des tables de séquence de la même manière que les actions standard.
Pour planifier une action personnalisée dans une table de séquence
- Saisissez le nom de l’action personnalisée (qui est la clé primaire de CustomAction) dans la colonne Action de la table Sequence.
- Saisissez la séquence de l’action personnalisée par rapport aux autres actions de la table dans la colonne Séquence de la table Sequence. Pour plus d’informations sur les tables de séquence, consultez la section Utilisation d’une table de séquence.
- Pour ignorer l’action de manière conditionnelle, saisissez une expression conditionnelle dans la colonne Condition de la table Sequence. Le programme d’installation ignore cette action si l’expression prend la valeur FALSE.
Comme dans le cas des actions standard, les actions personnalisées planifiées dans InstallUISequence ou AdminUISequence s’exécutent uniquement si l’interface utilisateur interne est définie sur le niveau complet. Le niveau d’interface utilisateur est défini à l’aide de la fonction MsiSetInternalUI.
Les actions standard et personnalisées planifiées dans les tables InstallExecuteSequence, AdminExecuteSequence ou AdvtExecuteSequence ne modifient pas le système. Au lieu de cela, le programme d’installation met en file d’attente les enregistrements d’exécution dans un script en vue d’une exécution ultérieure pendant le service d’installation. S’il n’existe aucun service d’installation, les actions planifiées dans ces tables sont exécutées dans le même contexte que la séquence d’interface utilisateur.
Si le serveur du programme d’installation n’est pas inscrit, les actions personnalisées sont exécutées côté client. Si le serveur est inscrit et utilise le mode d’interface utilisateur complet, les actions personnalisées sont exécutées côté serveur.
Si vous utilisez l’interface utilisateur complète avec le serveur, les actions initiales précédant l’action InstallerValidate sont exécutées sur le client pour permettre une interaction complète. L’exécution est ensuite basculée vers le serveur qui répète ces actions et exécute les actions d’exécution du script. Cette opération est suivie d’un retour au client pour les actions finales.
Notez que si un produit est supprimé en définissant sa fonctionnalité principale sur absent, la propriété REMOVE peut ne pas être égale à ALL jusqu’à l’action InstallerValidate. Cela signifie que toute action personnalisée qui dépend de REMOVE=ALL doit être séquencée après l’action InstallerValidate. Une action personnalisée peut vérifier REMOVE pour déterminer si un produit a été configuré pour être complètement désinstallé.
Les actions personnalisées qui référencent un fichier installé comme source, telles que le type d’action personnalisé 17 (DLL), le type d’action personnalisée 18 (EXE), le type d’action personnalisée 21 (JScript) et le type d’action personnalisé 22 (VBScript), doivent respecter les restrictions de séquencement suivantes.
- L’action personnalisée doit être séquencée après l’action CostFinalize, afin que le chemin d’accès au fichier référencé puisse être résolu.
- Si le fichier source n’est pas déjà installé sur l’ordinateur, les actions personnalisées différées (dans le script) doivent être séquencées après InstallFiles.
- Si le fichier source n’est pas déjà installé sur l’ordinateur, les actions personnalisées non différées doivent être séquencées après l’action InstallInitialize.
Les restrictions de séquencement suivantes s’appliquent aux actions personnalisées qui modifient ou mettent à jour un package Windows Installer.
- Si l’action personnalisée modifie le package, par exemple en ajoutant des lignes à une table, l’action doit être séquencée avant l’action InstallInitialize.
- Si l’action personnalisée apporte des modifications susceptibles d’affecter le coût, elle doit être séquencée avant l’action CostInitialize.
- Si l’action personnalisée modifie l’état d’installation des fonctionnalités ou des composants, elle doit être séquencée avant l’action InstallerValidate.