共用方式為


撰寫 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,且 TimeRemaining 控件屬性 在 Attributes 數據行中指定。

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

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