MsiSetExternalUIA 函数 (msi.h)

MsiSetExternalUI 函数启用外部用户界面处理程序。 在普通内部用户界面处理程序之前调用此外部 UI 处理程序。 外部 UI 处理程序通过返回非零值来禁止显示内部 UI,以指示它已处理消息。 有关详细信息,请参阅 关于用户界面

语法

INSTALLUI_HANDLERA MsiSetExternalUIA(
  [in] INSTALLUI_HANDLERA puiHandler,
  [in] DWORD              dwMessageFilter,
  [in] LPVOID             pvContext
);

参数

[in] puiHandler

指定符合 INSTALLUI_HANDLER 规范的回调函数。

[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

指向传递给回调函数的应用程序上下文的指针。 此参数可用于错误检查。

返回值

返回值是以前设置的外部处理程序,如果没有以前设置的处理程序,则返回值为零(0)。

言论

若要还原以前的 UI 处理程序,请使用第一次调用 MsiSetExternalUI 返回 msiSetExternalUI 并指定 dwMessageFilter 的零(0),对 msiSetExternalUI INSTALLUI_HANDLER 进行第二次 调用。

puiHandler 参数指向的外部用户界面处理程序无法完全控制外部用户界面,除非 使用 dwUILevel 参数设置为INSTALLUILEVEL_NONE调用 msiSetInternalUI。 如果未调用 MsiSetInternalUI,则内部用户界面级别默认为INSTALLUILEVEL_BASIC。 因此,外部用户界面处理程序未处理的任何消息都由 Windows Installer 处理。 初始“准备安装”。 . 即使外部用户界面处理程序处理所有消息,也始终会出现 “.” 对话框。

MsiSetExternalUI 只能从 引导 应用程序调用。 不能从自定义操作调用 MsiSetExternalUI

注意

msi.h 标头将 MsiSetExternalUI 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 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 Server 2003 或 Windows XP 上的 Windows Installer。 有关 Windows Installer 版本所需的最低 Windows Service Pack 的信息,请参阅 Windows Installer Run-Time 要求。
目标平台 窗户
标头 msi.h
Msi.lib
DLL Msi.dll

另请参阅

接口和日志记录函数