MsiBeginTransactionA 函数 (msi.h)

MsiBeginTransaction 函数开始 多包安装的事务处理,并返回事务的标识符。 MsiEndTransaction 函数结束事务。

Windows Installer 4.0 及更早版本:不支持 。 从 Windows Installer 4.5 开始,此函数可用。

语法

UINT MsiBeginTransactionA(
  [in]  LPCSTR    szName,
  [in]  DWORD     dwTransactionAttributes,
  [out] MSIHANDLE *phTransactionHandle,
  [out] HANDLE    *phChangeOfOwnerEvent
);

参数

[in] szName

多包安装的名称。

[in] dwTransactionAttributes

多包安装的属性。

价值 意义
0
当 0 或未设置任何值时,Windows Installer 会关闭上一安装中的 UI。
MSITRANSACTION_CHAIN_EMBEDDEDUI
设置此属性以请求 Windows Installer 在事务完成之前不会关闭嵌入式 UI。

[out] phTransactionHandle

事务 ID 是标识事务的 MSIHANDLE 值。 一次只能有一个进程拥有事务。

[out] phChangeOfOwnerEvent

此参数将返回 MsiJoinTransaction 函数将事务所有者更改为新所有者时设置的事件句柄。 当前所有者可以使用它来确定事务所有权何时发生更改。 离开没有所有者的事务将回滚事务。

返回值

MsiBeginTransaction 函数返回以下值。

价值 意义
ERROR_INSTALL_SERVICE_FAILURE
无法访问安装服务。 此函数需要 Windows Installer 服务。
ERROR_INSTALL_ALREADY_RUNNING
一次只能在系统上打开一个事务。 如果在另一个事务运行时调用,该函数将返回此错误。
ERROR_INVALID_PARAMETER
将无效参数传递给函数。
ERROR_ROLLBACK_DISABLED

DISABLEROLLBACK 属性或 DisableRollback 策略禁用了 回滚安装

言论

注意

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

要求

要求 价值
最低支持的客户端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Vista、Windows XP、Windows Server 2003 和 Windows Server 2008 上的 Windows Installer 4.5。 有关 Windows Installer 版本所需的最低 Windows Service Pack 的信息,请参阅 Windows Installer Run-Time 要求。
目标平台 窗户
标头 msi.h
Msi.lib
DLL Msi.dll

另请参阅

多个包安装