msi.h) (MsiBeginTransactionA 函数

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 运行时要求。
目标平台 Windows
标头 msi.h
Library Msi.lib
DLL Msi.dll

另请参阅

多个包安装