Share via


撰寫 ProgressBar 控制項

Windows Installer 包含可在動作顯示對話方塊中顯示進度指示器的功能。 ProgressBar 控制項以圖形方式表示個別元件的安裝,並報告相對於剩餘時間的總時間,或安裝完成之前的大約總時間。

為了判斷安裝預期的總時間,安裝程式會追蹤在執行腳本產生期間每個動作所預期的進度總刻度。 腳本產生完成時,會儲存進度刻度總計,並開始安裝。

詳細說明已耗用進度刻度數目的進度訊息,會在腳本中的每個動作執行時傳送至作用中的訊息處理常式。 在每個進度訊息上,安裝程式會將 SetProgress ControlEvent 廣播至目前使用中的對話方塊。 應該撰寫 UI 順序,以在腳本執行期間建立動作顯示對話方塊,以從安裝程式接收 SetProgress ControlEvent 訊息。

當動作顯示對話方塊收到 SetProgress ControlEvent 時,它會檢查 EventMapping 資料表 中是否有任何訂閱 ControlEvent 的控制項。 [動作顯示] 對話方塊上的 ProgressBar 控制項會使用 [屬性] 資料行中指定的 [進度] 控制項屬性來訂閱。 Progress Control 屬性會指定 ProgressBar 控制項會連同 SetProgress ControlEvent 一起傳遞 「ticksSoFar」 和 「totalTicks」 值。 進度列控制項會使用這項資訊,將圖形列從左往右前進以進行安裝,以及從右至左進行 復原 作業。

此外,安裝程式會在每個進度訊息上廣播 TimeRemaining ControlEvent 。 安裝剩餘的總時間取決於第一次計算執行率,也就是經過的刻度總數除以安裝開始後的總時間。 剩餘的刻度總計除以執行速率,可提供剩餘的大約時間。

當動作顯示對話方塊收到 TimeRemaining ControlEvent 時,它會再次查看 EventMapping 資料表中是否有任何已訂閱的控制項。 若要顯示剩餘的時間, Text 控制項 必須訂閱 TimeRemaining ControlEvent,並在 Attributes 資料行中指定的 TimeRemaining 控制項屬性

訂閱的 Text 控制項會查詢 UIText 資料表 中名為 「TimeRemaining」 的參數化範本字串。 此字串有兩個參數:[1] 表示分鐘,而 [2] 則為秒。 Text 控制項會將每個值轉換為分鐘和秒、評估 TimeRemaining 範本字串,並使用新的資訊更新文字控制項。

如果 UI 顯示層級設定為基本或更低,安裝程式會顯示預設對話方塊,其中包含進度列和 TimeRemaining 文字欄位。 如需詳細資訊,請參閱 使用者介面層級