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

Étant donné qu’une action personnalisée peut être planifiée dans les tables d’interface utilisateur et 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 des actions dans une table de séquences immédiatement par défaut.
  • N’exécute pas d’action si le champ expression conditionnelle de la table Sequence prend la valeur false.
  • Traite la table de séquence d’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 de l’interface utilisateur).
  • est un service enregistré par défaut lors de l’utilisation de Windows 2000 et, dans ce cas, la table d’exécution des séquences est traitée dans le service 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 ce tableau à la valeur du 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.

valeurs

Hexadécimal : 0x00000000

Décimal : 0

Exécutez toujours. 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

Ne pas exécuter plus d’une fois si elle est présente dans les deux tables de séquence. Ignore toujours l’action dans la séquence d’exécution si la séquence d’interface utilisateur a été exécutée. Aucun effet dans la séquence d’interface utilisateur. L’action ne doit pas obligatoirement être présente ou exécutée dans la séquence d’interface utilisateur pour être ignorée 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 les deux tables de séquences. Ignore l’action dans la séquence d’exécution si la séquence d’interface utilisateur a été exécutée dans le même processus, par exemple s’exécuter dans le processus client. Permet d’empêcher les actions qui modifient l’état de la session, telles que les données de la propriété et de la base de données, de s’exécuter deux fois.

msidbCustomActionTypeClientRepeat

Hexadécimal : 0x00000300

Décimal : 768

S’exécute uniquement en cas d’exécution sur le client après l’exécution de la séquence d’interface utilisateur. L’action s’exécute uniquement si la séquence d’exécution est exécutée sur le client suivant la séquence d’interface utilisateur. Peut être utilisé pour fournir une logique/ou logique, ou pour supprimer le traitement lié à l’interface utilisateur s’il est déjà fait pour la session cliente.

Notez que pour exécuter une action personnalisée pendant 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 _ planifié 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 l’action personnalisée.

Référence des actions personnalisées

À propos des actions personnalisées

Utilisation d’actions personnalisées