MsiBeginTransactionA function (msi.h)

The MsiBeginTransaction function starts transaction processing of a multiple-package installation and returns an identifier for the transaction. The MsiEndTransaction function ends the transaction.

Windows Installer 4.0 and earlier:  Not supported. This function is available beginning with Windows Installer 4.5.


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


[in] szName

Name of the multiple-package installation.

[in] dwTransactionAttributes

Attributes of the multiple-package installation.

Value Meaning
When 0 or no value is set it Windows Installer closes the UI from the previous installation.
Set this attribute to request that the Windows Installer not shutdown the embedded UI until the transaction is complete.

[out] phTransactionHandle

Transaction ID is a MSIHANDLE value that identifies the transaction. Only one process can own a transaction at a time.

[out] phChangeOfOwnerEvent

This parameter returns a handle to an event that is set when the MsiJoinTransaction function changes the owner of the transaction to a new owner. The current owner can use this to determine when ownership of the transaction has changed. Leaving a transaction without an owner will roll back the transaction.

Return value

The MsiBeginTransaction function returns the following values.

Value Meaning
The installation service could not be accessed. This function requires the Windows Installer service.
Only one transaction can be open on a system at a time. The function returns this error if called while another transaction is running.
An invalid parameter is passed to the function.

Rollback Installations have been disabled by the DISABLEROLLBACK property or DisableRollback policy.



The msi.h header defines MsiBeginTransaction as an alias which automatically selects the ANSI or Unicode version of this function based on the definition of the UNICODE preprocessor constant. Mixing usage of the encoding-neutral alias with code that not encoding-neutral can lead to mismatches that result in compilation or runtime errors. For more information, see Conventions for Function Prototypes.


Minimum supported client Windows Installer 5.0 on Windows Server 2012, Windows 8, Windows Server 2008 R2 or Windows 7. Windows Installer 4.5 on Windows Vista, Windows XP, Windows Server 2003, and Windows Server 2008. See the Windows Installer Run-Time Requirements for information about the minimum Windows service pack that is required by a Windows Installer version.
Target Platform Windows
Header msi.h
Library Msi.lib
DLL Msi.dll

See also

Multiple Package Installations