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
msiMessageStatusError
-1
msiMessageStatusNone
0
msiMessageStatusOk
1
msiMessageStatusCancel
2
msiMessageStatusAbort
3
msiMessageStatusRetry
4
msiMessageStatusIgnore
5
msiMessageStatusYes
6
msiMessageStatusNo
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
Msi.dll
IID
IID_ISession 定义为 000C109E-0000-0000-C000-000000000046