ControlEvent 概述
ControlEvent 类似于基于 Win32 的应用程序中的 Microsoft Windows 消息。 但是,用户界面 (UI) 安装程序和控件不是通过创建回调函数来接收 Windows 消息和使用 SendMessage 函数发送 Windows 消息,而是发布 ControlEvent。 可以指定其他控件和安装程序来订阅特定的 ControlEvent,这些 ControlEvent 随后将更改订阅控件的属性。 若要将工作控件添加到对话框,UI 的作者在 ControlEvent 表中指定发布 ControlEvent,并将控件订阅到 EventMapping 表中的 ControlEvent。
安装程序会将以下事件发布到 EventMapping 表中列出的订阅控件。 ProgressBar 控件或 Billboard 控件通常订阅 SetProgress,文本控件则订阅其余事件。
在 SelectionTree 控件或 DirectoryList 控件中选择项目时,控件会发布以下事件。 订阅控件必须位于同一对话框中,且列于 EventMapping 表中。
SelectionDescription ControlEvent
通过与对话框中的 PushButton 控件或 CheckBox 控件交互,用户可以自行决定发布以下 ControlEvent。 Checkbox 控件只能发布 AddLocal、AddSource、Remove、DoAction 和 SetProperty 事件。 对于随 Windows Server 2003 及更高版本提供的 Windows Installer 版本,SelectionTree 控件可以发布 DoAction、ControlEvent 和 SetProperty ControlEvent。 UI 的作者应在 ControlEvent 表中列出 ControlEvent。 安装程序的 UI 处理程序是这些事件的订阅者。
CheckExistingTargetPath ControlEvent
ValidateProductID ControlEvent
PushButton 控件可将以下事件发布到位于同一对话框中的订阅 SelectionTree 控件或 DirectoryList 控件。 PushButton 控件应列于 ControlEvent 表中,且这些订阅控件应列于 EventMapping 表中。
DirectoryListOpen ControlEvent
控件事件通常要求在完整 UI 级别运行 UI。 大多数 ControlEvent 不适用于简化 UI 或 基本 UI,因为这些 UI 级别仅显示无模式对话框。 ActionText、AddSource、SetProgress、TimeRemaining 和 ScriptInProgress 事件是例外,这些事件会在简化或基本 UI 中正常工作。 有关 UI 级别的详细信息,请参阅用户界面级别。
通过从 PushButton 控件或 Checkbox 控件发布 ControlEvent,可以运行自定义操作。 向 ControlEvent 表添加一条记录,其中包含对话框的名称和发布 ControlEvent 的控件的名称。 此控件应发布 DoAction ControlEvent,通知安装程序运行自定义操作。 在 Windows XP 或更低版本的系统中,无法通过从 SelectionTree 控件发布 ControlEvent 来运行自定义操作。
有关特定 ControlEvent 的详细信息,请参阅用户界面参考中的标准 ControlEvent 列表。