MsiSetExternalUIRecord 函式 (msi.h)

MsiSetExternalUIRecord函式會啟用外部使用者介面 (UI) 處理常式。

語法

UINT MsiSetExternalUIRecord(
  [in]            INSTALLUI_HANDLER_RECORD  puiHandler,
  [in]            DWORD                     dwMessageFilter,
  [in]            LPVOID                    pvContext,
  [out, optional] PINSTALLUI_HANDLER_RECORD ppuiPrevHandler
);

參數

[in] puiHandler

指定符合 INSTALLUI_HANDLER_RECORD規格的 回呼函式。

若要停用目前的外部 UI 處理常式,請使用此參數設定為 Null 值來呼叫 函式。

[in] dwMessageFilter

指定要使用外部訊息處理常式處理的訊息。 如果外部處理常式傳回非零的結果,則該訊息不會傳送至 UI,而是會在啟用記錄時記錄訊息。 如需詳細資訊,請參閱 MsiEnableLog

意義
INSTALLLOGMODE_FILESINUSE
使用中檔案資訊。

收到此訊息時,應該會顯示 FilesInUse 對話方塊

INSTALLLOGMODE_FATALEXIT
安裝提前終止。
INSTALLLOGMODE_ERROR
系統會記錄錯誤訊息。
INSTALLLOGMODE_WARNING
系統會記錄警告訊息。
INSTALLLOGMODE_USER
系統會記錄使用者要求。
INSTALLLOGMODE_INFO
不會顯示的狀態訊息會記錄。
INSTALLLOGMODE_RESOLVESOURCE
判斷有效來源位置的要求。
INSTALLLOGMODE_RMFILESINUSE
使用中檔案資訊。 收到此訊息時,應該會顯示 MsiRMFilesInUse 對話方塊
INSTALLLOGMODE_OUTOFDISKSPACE
磁碟空間不足。
INSTALLLOGMODE_ACTIONSTART
系統會記錄新安裝動作的開始。
INSTALLLOGMODE_ACTIONDATA
記錄具有安裝動作的資料記錄。
INSTALLLOGMODE_COMMONDATA
系統會記錄使用者介面初始化的參數。
INSTALLLOGMODE_PROGRESS
進度列資訊。

此訊息包含目前單位和單位總數的相關資訊。 此訊息只會傳送至外部使用者介面,而且不會記錄。 如需詳細資訊,請參閱 MsiProcessMessage

INSTALLLOGMODE_INITIALIZE
如果這不是無訊息安裝, 則會初始化基本 UI

如果這是完整的 UI 安裝,則尚未初始化 完整 UI

此訊息只會傳送至外部使用者介面,而且不會記錄。

INSTALLLOGMODE_TERMINATE
如果使用完整的 UI,則完整 UI 已結束。

如果這不是無訊息安裝,則基本 UI 尚未結束。

此訊息只會傳送至外部使用者介面,而且不會記錄。

INSTALLLOGMODE_SHOWDIALOG
在顯示 [完整 UI] 對話方塊之前傳送。

此訊息只會傳送至外部使用者介面,而且不會記錄。

INSTALLLOGMODE_INSTALLSTART
產品安裝開始。

訊息包含產品的 ProductName 和 ProductCode。

INSTALLLOGMODE_INSTALLEND
產品安裝結束。

訊息包含產品的 ProductName、ProductCode 和傳回值。

[in] pvContext

傳遞至回呼函式之應用程式內容的指標。

此參數可用於錯誤檢查。

[out, optional] ppuiPrevHandler

傳回先前設定回呼函式的指標,該函式符合 INSTALLUI_HANDLER_RECORD 規格,如果沒有先前設定回呼,則傳回 Null

傳回值

傳回碼 描述
ERROR_SUCCESS
函式成功完成。
ERROR_CALL_NOT_IMPLEMENTED
這個值表示嘗試從自訂動作呼叫此函式。

無法從自訂動作呼叫此函式。

備註

無法從 自訂動作呼叫此函式。

呼叫 MsiSetExternalUIRecord 所啟用的外部 UI 處理常式會接收 Record 物件格式的訊息。 呼叫 MsiSetExternalUI 所啟用的外部 UI 處理常式會接收字串格式的訊息。 在 Windows Installer 內部 UI 之前,一律會呼叫外部 UI。 啟用的記錄型外部 UI 會在任何以字串為基礎的外部 UI 之前呼叫。 如果記錄型外部 UI 處理常式傳回 0 (零) ,訊息就會傳送至任何啟用的字串型外部 UI 處理常式。 如果外部 UI 處理常式傳回非零值,則會隱藏內部 Windows Installer UI 處理常式,並將訊息視為已處理。

此函式會儲存它已設定的外部使用者介面。 若要以先前的處理常式取代目前的外部 UI 處理常式,請呼叫 函式,並將 INSTALLUI_HANDLER_RECORD 指定為 puiHandler 參數,並將 0 (零) 指定為 dwMessageFilter 參數。

puiHandler參數指向的外部使用者介面處理常式無法完全控制外部使用者介面,除非呼叫 MsiSetInternalUI並將dwUILevel參數設定為 INSTALLUILEVEL_NONE。 如果未呼叫 MsiSetInternalUI ,內部使用者介面層級會預設為INSTALLUILEVEL_BASIC。 因此,Windows Installer 會處理外部使用者介面處理常式未處理的任何訊息。 初始「準備安裝」。 . .「 對話方塊一律會出現,即使外部使用者介面處理常式處理所有訊息也一樣。 MsiSetExternalUI 應該只從 啟動載入 應用程式呼叫。 您無法從自訂動作呼叫 MsiSetExternalUI

若要停用此外部 UI 處理常式,請使用puiHandler參數的Null值呼叫MsiSetExternalUIRecord

Windows Installer 2.0 和 Windows Installer 3.0: 不支援。 MsiSetExternalUIRecord函式可從 Windows Installer 3.1 開始提供。

如需使用記錄型外部處理常式的詳細資訊,請參閱 使用 MsiSetExternalUIRecord 監視安裝

需求

   
最低支援的用戶端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 如需 Windows Installer 版本所需的最低 Windows Service Pack 相關資訊,請參閱 Windows Installer Run-Time 需求。
目標平台 Windows
標頭 msi.h
程式庫 Msi.lib
Dll Msi.dll

另請參閱

介面和記錄函式

Windows Installer 3.0 和更早版本中不支援