Session.Message 方法
Session 对象的 Message 方法执行任何已启用的日志记录操作,并将执行延迟到与引擎关联的 UI 处理程序对象。 可以有选择地为各种消息类型启用日志记录。 请参阅 EnableLog 方法。
如果记录字段 0 包含格式设置字符串,则可用于设置其他字段中数据的格式。 否则,如果收到的是错误、警告或用户消息,则尝试使用消息类型和返回值的记录字段 1 中的错误编号,在当前数据库的错误表中查找消息模板。
语法
Session.Message(
kind,
record
)
参数
-
kind
-
kind 参数必须是以下值之一。 若要显示带有下压按钮和图标的消息框,请通过将 MessageBox 和 MessageBoxEx 使用的标准消息框样式添加到 msiMessageTypeError、msiMessageTypeWarning 或 msiMessageTypeUser 来计算 kind 值。 有关详细信息,请参阅下面的“备注”部分。
返回的常量 含义 - msiMessageTypeFatalExit
- &H00000000
过早终止,可能是致命的内存不足问题所致。 - msiMessageTypeError
- &H01000000
格式化错误消息,[1] 是错误表中的消息编号。 - msiMessageTypeWarning
- &H02000000
格式化警告消息,[1] 是错误表中的消息编号。 - msiMessageTypeUser
- &H03000000
用户请求消息,[1] 是错误表中的消息编号。 - msiMessageTypeInfo
- &H04000000
日志的信息性消息,无需显示。 - msiMessageTypeFilesInUse
- &H05000000
使用时需要替换的文件的列表。 - msiMessageTypeResolveSource
- &H06000000
请求确定有效的源位置。 - msiMessageTypeOutOfDiskSpace
- &H07000000
磁盘空间不足的消息。 - msiMessageTypeActionStart
- &H08000000
操作开始,[1] 操作名称、[2] 说明、[3] ACTIONDATA 消息模板。 - msiMessageTypeActionData
- &H09000000
操作数据。 记录对应于 ACTIONSTART 消息模板的字段。 - msiMessageTypeProgress
- &H0A000000
进度栏信息。 请参阅下面的记录字段的说明。 - msiMessageTypeCommonData
- &H0B000000
若要启用“取消”按钮,请将 [1] 设置为 2,将 [2] 设置为 1。
若要禁用“取消”按钮,请将 [1] 设置为 2,将 [2] 设置为 0 -
record
-
必需的 Record 对象,其中包含特定于消息的字段。
返回值
常数 | Value |
---|---|
|
-1 |
|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
备注
消息记录字段
下面介绍了将 msiMessageTypeProgress 作为消息类型传递时的记录字段定义。
字段 1 指定进度消息的类型。 其他字段的含义取决于此字段中的值。 可以设置为字段 1 的可能值如下所示。
消息名 | 值 | 字段 1 说明 |
---|---|---|
MasterReset | 0 | 重置进度栏并设置进度栏中的预期刻度线总数。 |
ActionInfo | 1 | 提供与当前操作要发送的进度消息相关的信息。 |
ProgressReport | 2 | 递增进度栏。 |
ProgressAddition | 3 | 启用某个操作(如 CustomAction),以将刻度线添加到进度栏的预期总进度数。 |
字段 2 的含义取决于字段 1 中的值,如下所示。
字段 1 值 | 字段 2 说明 |
---|---|
0 | 进度栏中的预期刻度线总数。 |
1 | 进度栏针对每个 ActionData 消息移动的刻度线数。 如果字段 3 为 0,则忽略此字段。 |
2 | 进度栏已移动的刻度线数。 |
3 | 要添加到预期总进度的刻度线数。 |
字段 3 的含义取决于字段 1 中的值,如下所示。
字段 1 值 | 字段 3 值 | 字段 3 说明 |
---|---|---|
0 | 0 | 向前进度栏(从左到右) |
1 | 向后进度条(从右到左) | |
1 | 0 | 当前操作将发送显式 ProgressReport 消息。 |
1 | 每次发送 ActionData 消息时,按字段 2 中指定的刻度线数递增进度栏。 | |
2 | 未使用 | |
3 | 未使用 |
字段 4 的含义取决于字段 1 中的值,如下所示。
字段 1 值 | 字段 4 值 | 字段 4 说明 |
---|---|---|
0 | 0 | 正在执行。 在这种情况下,UI 可以计算并显示剩余时间。 |
1 | 创建执行脚本。 在这种情况下,UI 可能会显示一条消息,用于指示安装程序正在完成准备安装的操作,请稍候。 | |
1 | 未使用 | |
2 | 未使用 | |
3 | 未使用 |
显示消息框
若要显示带有下压按钮和图标的消息框,请通过将 MessageBox 和 MessageBoxEx 使用的标准消息框样式添加到 msiMessageTypeError、msiMessageTypeWarning 或 msiTypeUser 来计算 kind 值。 VBScript 的可用下压按钮选项包括 vbOKOnly (MB_OK)、vbOKCancel (MB_OKCANCEL)、vbAbortRetryIgnore (MB_ABORTRETRYIGNORE)、vbYesNoCancel (MB_YESNOCANCEL)、vbYesNo (MB_YESNO) 和 vbRetryCancel (MB_RETRYCANCEL)。 VBScript 的可用图标选项包括 vbCritical (MB_ICONERROR)、vbQuestion (MB_ICONQUESTION)、vbExclamation (MB_ICONWARNING) 和 vbInformation (MB_ICONINFORMATION)。
例如,以下调用发送带有 vbExclamation 图标和 vbYesNo 按钮的 msiMessageTypeError 消息。
Session.Message &H01000034, record
如果自定义操作调用 Message 方法,则自定义操作应能够处理用户取消操作,并应返回 msiDoActionStatusUserExit。
要求
要求 | 值 |
---|---|
版本 |
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 |
DLL |
|
IID |
IID_ISession 定义为 000C109E-0000-0000-C000-000000000046 |