Функция 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 или не задано, установщик Windows закрывает пользовательский интерфейс из предыдущей установки. |
|
Задайте этот атрибут, чтобы установщик Windows не завершать работу внедренного пользовательского интерфейса до завершения транзакции. |
|
Задайте этот атрибут, чтобы запросить передачу установщиком Windows внедренного пользовательского интерфейса из исходной установки. Если исходная установка не имеет встроенного пользовательского интерфейса, установка этого атрибута не выполняет никаких действий. |
[out] phChangeOfOwnerEvent
Этот параметр возвращает дескриптор событиям, которое устанавливается, когда функция MsiJoinTransaction изменяет владельца транзакции на нового владельца. Текущий владелец может использовать этот параметр, чтобы определить, когда изменилось владение транзакцией. Если транзакция останется без владельца, транзакция будет откатиться.
Возвращаемое значение
Функция MsiJoinTransaction может возвращать следующие значения.
Значение | Значение |
---|---|
|
Пользователь, которому принадлежит транзакция, и пользователь, присоединяющийся к транзакции, не совпадают. |
|
Недопустимый параметр передается в функцию . |
|
Владелец не может быть изменен во время активной установки. |
|
Указанный идентификатор транзакции недопустим. |
Комментарии
Так как транзакция может принадлежать не более чем одному процессу за раз, функции, созданные в таблице 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 |