Partager via


Options de planification de l’exécution d’actions personnalisées

Étant donné qu’une action personnalisée peut être planifiée à la fois dans l’interface utilisateur et les tables de séquences d’exécution, et qu’elle peut être exécutée dans le processus du service ou du client, une action personnalisée peut potentiellement s’exécuter plusieurs fois.

Notez que le programme d’installation :

  • Exécute les actions d’une table de séquence immédiatement par défaut.
  • N’exécute pas une action si le champ de l’expression conditionnelle de la table de séquence s’évalue à False.
  • Traite la table de séquence de l’interface utilisateur dans le processus client si le niveau d’interface de l’utilisateur interne est défini sur le mode d’interface utilisateur complet (consultez MsiSetInternalUI pour obtenir une description des niveaux d’interface utilisateur).
  • Est un service inscrit par défaut lors de l’utilisation de Windows2000 et, dans ce cas, la table de séquence d’exécution est traitée dans le service du programme d’installation.

Vous pouvez utiliser les indicateurs d’option suivants pour contrôler plusieurs exécutions immédiates d’actions personnalisées. Pour définir une option, ajoutez la valeur de cette table à la valeur dans le champ Type de la table CustomAction. Aucun des indicateurs suivants ne doit être utilisé avec des actions personnalisées d’exécution différée.

(par défaut)

Hexadécimal : 0x00000000

Décimal : 0

Toujours exécuter. L’action peut s’exécuter deux fois si elle est présente dans les deux tables de séquence.

msidbCustomActionTypeFirstSequence

Hexadécimal : 0x00000100

Décimal : 256

Exécuter une seule fois s’il est présent dans les deux tables de séquence. Ignore toujours l’action dans la séquence d’exécution si la séquence de l’interface utilisateur a été exécutée. Pas d’effet dans la séquence de l’interface utilisateur. L’action n’est pas obligatoirement présente ou exécutée dans la séquence de l’interface utilisateur à ignorer dans la séquence d’exécution. Non affecté par l’inscription du service d’installation.

msidbCustomActionTypeOncePerProcess

Hexadécimal : 0x00000200

Décimal : 512

Exécuter une fois par processus si présent dans les deux tables de séquence. Ignore l’action dans la séquence d’exécution si la séquence de l’interface utilisateur a été exécutée dans le même processus, par exemple les deux exécutions dans le processus client. Utilisé pour empêcher les actions qui modifient l’état de session, comme des données de propriété et de base de données, de s’exécuter deux fois.

msidbCustomActionTypeClientRepeat

Hexadécimal : 0x00000300

Décimal : 768

Exécuter seulement en cas d’exécution sur le client après l’exécution de la séquence de l’interface utilisateur. L’action s’exécute seulement si la séquence d’exécution est exécutée sur le client suivant la séquence de l’interface utilisateur. Peut être utilisé pour fournir une logique soit/soit, ou pour supprimer le traitement lié à l’interface utilisateur s’il a déjà été effectué pour la session du client.

Notez que pour exécuter une action personnalisée dans deux modes d’exécution différents, créez deux entrées dans la table CustomAction. Par exemple, pour avoir une action personnalisée qui appelle une bibliothèque de liens dynamiques (DLL) C/C++ (Type d’action personnalisée 1) quand le mode est MSIRUNMODE_SCHEDULED et MSIRUNMODE_ROLLBACK, placez deux entrées dans la table CustomAction qui appellent la même DLL, mais qui ont des types numériques différents. Incluez le code qui appelle MsiGetMode pour déterminer quand exécuter quelle action personnalisée.

Informations de référence sur les actions personnalisées

À propos des actions personnalisées

Utilisation d’actions personnalisées