撰寫 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 文字欄位。 如需詳細資訊,請參閱 使用者介面層級