Функция MsiJoinTransaction (msi.h)

Функция MsiJoinTransaction запрашивает, чтобы установщик Windows сделать текущий процесс владельцем транзакции , устанавливающей установку с несколькими пакетами.

Установщик Windows 4.0 и более ранние версии: Не поддерживается. Эта функция доступна начиная с установщика Windows 4.5.

Синтаксис

UINT MsiJoinTransaction(
  [in]  MSIHANDLE hTransactionHandle,
  [in]  DWORD     dwTransactionAttributes,
  [out] HANDLE    *phChangeOfOwnerEvent
);

Параметры

[in] hTransactionHandle

Идентификатор транзакции, который идентифицирует транзакцию и является идентификатором, возвращаемым функцией MsiBeginTransaction .

[in] dwTransactionAttributes

Атрибуты установки с несколькими пакетами.

Значение Значение
0
Если значение равно 0 или не задано, установщик Windows закрывает пользовательский интерфейс из предыдущей установки.
MSITRANSACTION_CHAIN_EMBEDDEDUI
Задайте этот атрибут, чтобы установщик Windows не завершать работу внедренного пользовательского интерфейса до завершения транзакции.
MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI
Задайте этот атрибут, чтобы запросить передачу установщиком Windows внедренного пользовательского интерфейса из исходной установки. Если исходная установка не имеет встроенного пользовательского интерфейса, установка этого атрибута не выполняет никаких действий.

[out] phChangeOfOwnerEvent

Этот параметр возвращает дескриптор событиям, которое устанавливается, когда функция MsiJoinTransaction изменяет владельца транзакции на нового владельца. Текущий владелец может использовать этот параметр, чтобы определить, когда изменилось владение транзакцией. Если транзакция останется без владельца, транзакция будет откатиться.

Возвращаемое значение

Функция MsiJoinTransaction может возвращать следующие значения.

Значение Значение
ERROR_ACCESS_DENIED
Пользователь, которому принадлежит транзакция, и пользователь, присоединяющийся к транзакции, не совпадают.
ERROR_INVALID_PARAMETER
Недопустимый параметр передается в функцию .
ERROR_INSTALL_ALREADY_RUNNING
Владелец не может быть изменен во время активной установки.
ERROR_INVALID_HANDLE_STATE
Указанный идентификатор транзакции недопустим.

Комментарии

Так как транзакция может принадлежать не более чем одному процессу за раз, функции, созданные в таблице MsiEmbeddedChainer , могут использовать MsiJoinTransaction для запроса владения транзакцией перед использованием API установщика Windows для настройки или установки приложения. Установщик проверяет, не выполняется ли установка. Установщик проверяет, что процесс, запрашивающий владение, и процесс, которому в данный момент принадлежит транзакция, совместно используют родительский процесс в одном дереве процессов. Если функция выполняется успешно, текущим владельцем транзакции становится процесс, вызывающий MsiJoinTransaction .

MsiJoinTransaction задает для внутреннего пользовательского интерфейса новой установки уровень пользовательского интерфейса исходной установки. После того как новая установка владеет транзакцией, она может вызвать MsiSetInternalUI , чтобы изменить уровень пользовательского интерфейса. Это позволяет новой установке выполняться на более высоком уровне пользовательского интерфейса, чем исходная установка.

Требования

Требование Значение
Минимальная версия клиента Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.5 в Windows Vista, Windows XP, Windows Server 2003 и Windows Server 2008. Сведения о минимальном пакете обновления Windows, необходимом для версии установщика Windows, см. в статье Требования к установщику Windows Run-Time.
Целевая платформа Windows
Header msi.h
Библиотека Msi.lib
DLL Msi.dll

См. также раздел

Установка нескольких пакетов