Share via


剖析 Windows Installer 訊息

外部 UI 處理常式可以處理 MsiSetExternalUI 函式之 dwMessagedFilter 參數 指定的安裝程式訊息清單。 其中有些訊息包含可以直接使用的字串,而且外部 UI 處理常式可能需要剖析及處理其他訊息,才能很有用。 您的外部 UI 處理常式可能只需要監視 Windows Installer 訊息,而不需要執行任何會影響安裝的作業。

下列 Windows Installer 訊息包含可由對話方塊顯示的字串,而且不需要額外的處理。 這些訊息包含對話方塊所要顯示的按鈕和圖示清單。 您可以使用 MB_ICONMASK MB_DEFMASK MB_TYPEMASK 值來指定圖示和按鈕。

INSTALLMESSAGE_FATALEXIT

發生安裝過早終止。

INSTALLMESSAGE_ERROR

格式化的錯誤訊息。

INSTALLMESSAGE_WARNING

格式化的警告訊息。

INSTALLMESSAGE_INFO

格式化的記錄訊息。

INSTALLMESSAGE_USER

格式化的使用者訊息。

INSTALLMESSAGE_OUTOFDISKSPACE

格式化的訊息,指出磁碟空間不足的情況

外部使用者處理常式可以使用下列 Windows Installer 訊息來監視 Windows Installer UI 的序列。 安裝程式會在 Windows Installer UI 序列的開頭傳送這些訊息,因為每個對話方塊都會顯示,並在 UI 序列的結尾。 不需要處理這些訊息。

INSTALLMESSAGE_TERMINATE

此訊息表示 UI 序列的結尾。 字串是 Null 字串。

INSTALLMESSAGE_INITIALIZE

此訊息表示 UI 序列已啟動。 字串是 Null 字串。

INSTALLMESSAGE_SHOWDIALOG

字串包含目前對話方塊的名稱。

下列 Windows Installer 訊息需要外部 UI 處理常式的額外處理。

INSTALLMESSAGE_RESOLVESOURCE

外部使用者介面處理常式必須傳回 0,並允許 Windows Installer 處理訊息。 外部使用者介面處理常式可以監視此訊息,但不應該執行任何會影響安裝 的動作。

INSTALLMESSAGE_FILESINUSE

外部 UI 應該會顯示 FilesInUse 對話方塊 ,以回應此訊息。

INSTALLMESSAGE_RMFILESINUSE

外部 UI 應該會顯示 MsiRMFilesInUse 對話方塊 ,以回應此訊息。 從 Windows Installer 4.0 版開始提供。 如需此訊息的詳細資訊,請參閱 搭配外部 UI 使用重新開機管理員。

INSTALLMESSAGE_ACTIONSTART

此訊息提供目前動作的相關資訊。 格式為 Action [1]: [2]。 [3],其中冒號用來分隔欄位 1 和欄位 2,而句號則用來分隔欄位 2 和欄位 3。 欄位 [1] 包含使用 Time 屬性格式啟動 動作的時間。 欄位 [2] 包含序列資料表中的動作名稱。 欄位 [3] 會從 ActionText 資料表 MsiProcessMessage 函式提供動作的描述。

INSTALLMESSAGE_ACTIONDATA

此字串的格式是由 ActionText 資料表 或 MsiProcessMessage 函式中 提供的 Template 值所 指定。 在INSTALLMESSAGE_ACTIONSTART 訊息之後 ,可能會有無限數目 的INSTALLMESSAGE_ACTIONDATA 訊息。

INSTALLMESSAGE_COMMONDATA

此訊息有三個子類型:Language、Caption 和 CancelShow。 字串可以有三個以數位分隔的欄位,後面接著冒號。 並非所有欄位都是必要欄位。 訊息可以是 Null 或空白 (「」) 字串。

語言

欄位 1 包含值 0,表示此字串包含語言資訊。 欄位 2 包含 語言 值,其為數值語言識別項 (LANGID.)欄位 3 是代表 ANSI 字碼頁的值。

標題

欄位 1 包含值 1,表示此字串包含標題或標題的文字。 欄位 2 包含外部 UI 處理常式可作為對話方塊標題標題的文字。 欄位 3 為 Null 或空的 (「」) 字串。 欄位 3 在 Caption 訊息中可能不存在。

CancelShow

欄位 1 包含值 2,表示此字串包含是否顯示取消按鈕的相關資訊。 如果應該隱藏取消按鈕,欄位 2 會包含值 0。 如果應該顯示取消按鈕,欄位 2 會包含值 1。

INSTALLMESSAGE_PROGRESS

此訊息有四個子類型:Reset、ActionInfo、ProgressReport 和 ProgressAddition。 在收到第一個重設進度訊息之前,外部處理常式不應對上述任何訊息採取行動。 這會提供進度列刻度總數的估計值。

重 置

欄位 1 包含值 0,表示進度列的重設。 欄位 2 包含進度列中的刻度總數。 欄位 3 包含向前進度列動作的值 0。 欄位 3 包含向後進度列動作的值 1。 Field 4 中的值 0 表示安裝正在進行中,而且剩餘的時間可能會計算。 欄位 4 中的值 1 表示正在執行腳本,並顯示「請等候...」訊息可以顯示。 刻度總數的估計值是近似值,可能不正確。

ActionInfo

欄位 1 包含值 1,表示此字串包含動作資訊。 欄位 2 包含進度列針對目前動作所傳送之每個 ActionData 訊息移動的刻度數目。 如果 Field 3 包含值 0,請忽略 Field 2。 如果 Field 3 包含值 1,請針對目前動作所傳送的每個 ActionData 訊息,將進度列遞增 2 中的刻度數。 欄位 4 未使用。

ProgressReport

欄位 1 包含值 2,表示此字串包含進度資訊。 欄位 2 包含進度列移動的刻度數目。 欄位 3 未使用。 欄位 4 未使用。

ProgressAddition

欄位 1 包含值 3,表示動作可以新增進度列的刻度。 欄位 2 包含要新增至進度刻度總數的刻度數目。 欄位 3 未使用。 欄位 4 未使用。