Udostępnij za pośrednictwem


Tworzenie kontrolki ProgressBar

Instalator Windows zawiera funkcje wyświetlania wskaźnika postępu w oknie dialogowym wyświetlania akcji. Kontrolka ProgressBar graficznie reprezentuje instalację poszczególnych składników i zgłasza całkowity czas, który upłynął w stosunku do czasu pozostałego lub przybliżony całkowity czas pozostały do zakończenia instalacji.

Aby określić całkowity przewidywany czas instalacji, instalator śledzi łączne przewidywane kroki postępu dla każdej akcji podczas generowania skryptu wykonywalnego. Po zakończeniu generowania skryptu suma znaczników postępu jest przechowywana i rozpoczyna się instalacja.

Komunikaty o postępie zawierające szczegółowe informacje o upływie liczby znaczników postępu są wysyłane do aktywnej procedury obsługi komunikatów podczas wykonywania każdej akcji skryptu. W każdym komunikacie postępu instalator wysyła SetProgress ControlEvent do aktualnie aktywnego okna dialogowego. Sekwencja interfejsu użytkownika powinna zostać utworzona w celu utworzenia okna dialogowego wyświetlania akcji podczas wykonywania skryptu w celu odbierania komunikatów SetProgress ControlEvent z instalatora.

Gdy okno dialogowe wyświetlania akcji odbiera kontrolkę SetProgress ControlEvent, sprawdza tabelę EventMapping dla wszystkich kontrolek subskrybowanych do kontrolki ControlEvent. Kontrolka ProgressBar w oknie dialogowym wyświetlania akcji jest powiązana z kontrolką Progress poprzez atrybut określony w kolumnie Atrybuty. Atrybut kontroli ProgressBar określa, że kontrolka ProgressBar zostanie przekazana wartości "ticksSoFar" i "totalTicks" wraz z zdarzeniem kontrolnym SetProgress. Kontrolka paska postępu używa tych informacji, aby przesuwać pasek graficzny od lewej do prawej podczas instalacji i od prawej do lewej podczas operacji wycofywania.

Ponadto instalator emituje TimeRemaining ControlEvent przy każdym komunikacie o postępie. Całkowity czas pozostały do zakończenia instalacji jest określany przez pierwsze obliczenie współczynnika wykonania, czyli łączną liczbę tików, które upłynęły, podzieloną przez łączny czas od rozpoczęcia instalacji. Łączna liczba pozostałych znaczników podzielona przez szybkość wykonywania daje przybliżony pozostały czas.

Gdy okno dialogowe wyświetlania akcji odbiera zdarzenie kontrolne TimeRemaining, ponownie przeszukuje tabelę EventMapping w poszukiwaniu wszystkich kontrolek, które są subskrybowane. Aby wyświetlić pozostały czas, kontrolka Tekst musi być subskrybowana do kontrolki TimeRemaining ControlEvent z atrybutem TimeRemaining określony w kolumnie Atrybuty.

Subskrybowana kontrolka Tekst wysyła zapytanie do tabeli UIText dla sparametryzowanego ciągu szablonu o nazwie "TimeRemaining". Ten ciąg ma dwa parametry: [1] dla minut i [2] dla sekund. Kontrolka Tekst konwertuje każdą wartość na minuty i sekundy, oblicza ciąg szablonu TimeRemaining i aktualizuje kontrolkę tekstu przy użyciu nowych informacji.

Jeśli poziom wyświetlania interfejsu użytkownika jest ustawiony na podstawowy lub niższy, instalator wyświetli domyślne okno dialogowe zawierające pasek postępu i pole tekstowe TimeRemaining. Aby uzyskać więcej informacji, zobacz Poziomy interfejsu użytkownika.