msiSetExternalUIRecord 函数 (msi.h)

MsiSetExternalUIRecord 函数启用外部用户界面 (UI) 处理程序。

语法

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

parameters

[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 处理程序接收 记录对象格式的消息。 通过调用 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 运行时要求。
目标平台 Windows
标头 msi.h
Library Msi.lib
DLL Msi.dll

另请参阅

接口和日志记录函数

在 Windows Installer 3.0 及更低版本中不受支持