msiSetExternalUIA 函数 (msi.h)

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

语法

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

parameters

[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 返回 的INSTALLUI_HANDLERMsiSetExternalUI 进行第二次调用,并为 dwMessageFilter 指定零 (0) 。

puiHandler 参数指向的外部用户界面处理程序不能完全控制外部用户界面,除非调用 MsiSetInternalUI 并将 dwUILevel 参数设置为 INSTALLUILEVEL_NONE。 如果未调用 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 运行时要求。
目标平台 Windows
标头 msi.h
Library Msi.lib
DLL Msi.dll

另请参阅

接口和日志记录函数