Séquencement d’actions personnalisées
Les actions personnalisées sont planifiées dans des tables de séquence de la même façon que les actions standard.
Planifier une action personnalisée dans une table de séquences
- Entrez le nom de l'action personnalisée (qui est la clé primaire de la table CustomAction) dans la colonne Action de la table Sequence.
- Entrez la séquence de l’action personnalisée par rapport aux autres actions de la table dans la colonne Sequence de la table Sequence. Pour plus d’informations sur les tables de séquences, consultez Using a Sequence Table.
- Pour ignorer l’action de manière conditionnelle, entrez 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 d’actions standard, les actions personnalisées planifiées dans l'InstallUISequence ou AdminUISequence s’exécutent uniquement si l’interface utilisateur interne est définie sur le niveau complet. Le niveau de l’interface utilisateur est défini à l’aide de la fonctionMsiSetInternalUI.
Les actions standard et personnalisées planifiées dans l'InstallExecuteSequence, AdminExecuteSequenceou AdvtExecuteSequence tables n’apportent pas de modifications système. Au lieu de cela, le programme d’installation met en file d’attente les enregistrements d’exécution dans un script pour 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 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 avant l’action InstallValidate 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 de script. Ceci est suivi d’un retour au client pour les actions finales.
Notez que si un produit est supprimé en définissant sa fonctionnalité principale comme étant absente, la propriété REMOVE peut ne pas être égale à ALL jusqu'à ce que l'action InstallValidate soit terminée. Cela signifie que toute action personnalisée qui dépend de REMOVE=ALL doit être séquencée après l’action InstallValidate. Une action personnalisée peut vérifier REMOVE pour déterminer si un produit a été complètement désinstallé.
Les actions personnalisées qui référencent un fichier installé comme source, comme le type d’action personnalisé 17 (DLL), le type d’action personnalisé 18 (EXE), le type d’action personnalisé 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 (en script) doivent être séquencées après le InstallFiles.
- Si le fichier source n’est pas déjà installé sur l’ordinateur, les actions personnalisées non prédéfinies 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 qui affectent les coûts, 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 InstallValidate.