Partager via


Création d’un contrôle ProgressBar

Windows Installer contient des fonctionnalités permettant d’afficher un indicateur de progression dans une boîte de dialogue d’affichage d’action. Le contrôle ProgressBar représente graphiquement l’installation de composants individuels et indique soit le temps total écoulé par rapport au temps restant, soit le temps total approximatif restant jusqu’à la fin de l’installation.

Pour déterminer le temps total prévu pour l’installation, le programme d’installation effectue le suivi des graduations de progression totale prévues par chaque action pendant la génération du script d’exécution. Une fois la génération de script terminée, le nombre total de cases de progression est stocké et l’installation commence.

Les messages de progression détaillant le nombre écoulé de graduations de progression sont envoyés au gestionnaire de messages actif à mesure que chaque action du script est exécutée. À chaque message de progression, le programme d’installation diffuse un ControlEvent SetProgress dans la boîte de dialogue actuellement active. La séquence d’interface utilisateur doit être créée pour créer la boîte de dialogue d’affichage de l’action pendant l’exécution du script pour recevoir les messages SetProgress ControlEvent du programme d’installation.

Lorsque la boîte de dialogue d’affichage de l’action reçoit un ControlEvent SetProgress, elle vérifie dans la table EventMapping tous les contrôles qui s’abonnent à l’événement ControlEvent. Le contrôle ProgressBar de la boîte de dialogue d’affichage de l’action est abonné avec l’attribut de contrôle Progress spécifié dans la colonne Attributes. L’attribut Progress Control spécifie que le contrôle ProgressBar reçoit les valeurs « ticksSoFar » et « totalTicks » ainsi que le ControlEvent SetProgress. Le contrôle de barre de progression utilise ces informations pour faire avancer la barre graphique de gauche à droite pour une installation et de droite à gauche pour une opération de restauration.

En outre, le programme d’installation diffuse un ControlEvent TimeRemaining sur chaque message de progression. Le temps total restant pour l’installation est déterminé en calculant d’abord le taux d’exécution, qui correspond au nombre total de graduations écoulées divisé par le temps total écoulé depuis le début de l’installation. Le nombre total de graduations restantes divisés par le taux d’exécution donne le temps approximatif restant.

Lorsque la boîte de dialogue d’affichage de l’action reçoit le ControlEvent TimeRemaining, elle recherche à nouveau dans la table EventMapping tous les contrôles qui sont abonnés. Pour afficher le temps restant, un contrôle Text doit être abonné au ControlEvent TimeRemaining avec l’attribut de contrôle TimeRemaining spécifié dans la colonne Attributes.

Le contrôle Text abonné interroge la table UIText pour obtenir une chaîne de modèle paramétrable nommée « TimeRemaining ». Cette chaîne a deux paramètres, [1] pour les minutes et [2] pour les secondes. Le contrôle Text convertit chaque valeur en minutes et en secondes, évalue la chaîne de modèle TimeRemaining et met à jour le contrôle de texte avec les nouvelles informations.

Si le niveau d’affichage de l’interface utilisateur est défini sur « de base » ou « inférieur », le programme d’installation affiche une boîte de dialogue par défaut contenant une barre de progression et un champ de texte TimeRemaining. Pour plus d’informations, consultez Niveaux d’interface utilisateur.