Share via


Función MsiJoinTransaction (msi.h)

La función MsiJoinTransaction solicita que Windows Installer convierta el proceso actual en el propietario de la transacción que instala la instalación de varios paquetes.

Windows Installer 4.0 y versiones anteriores: No se admite. Esta función está disponible a partir de Windows Installer 4.5.

Sintaxis

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

Parámetros

[in] hTransactionHandle

El identificador de transacción, que identifica la transacción y es el identificador devuelto por la función MsiBeginTransaction .

[in] dwTransactionAttributes

Atributos de la instalación de varios paquetes.

Valor Significado
0
Cuando se establece 0 o ningún valor, Windows Installer cierra la interfaz de usuario de la instalación anterior.
MSITRANSACTION_CHAIN_EMBEDDEDUI
Establezca este atributo para solicitar que Windows Installer no apague la interfaz de usuario insertada hasta que se complete la transacción.
MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI
Establezca este atributo para solicitar que Windows Installer transfiera la interfaz de usuario insertada desde la instalación original. Si la instalación original no tiene ninguna interfaz de usuario incrustada, establecer este atributo no hace nada.

[out] phChangeOfOwnerEvent

Este parámetro devuelve un identificador a un evento que se establece cuando la función MsiJoinTransaction cambia el propietario de la transacción a un nuevo propietario. El propietario actual puede usarlo para determinar cuándo ha cambiado la propiedad de la transacción. Si deja una transacción sin un propietario, se revertirá la transacción.

Valor devuelto

La función MsiJoinTransaction puede devolver los valores siguientes.

Valor Significado
ERROR_ACCESS_DENIED
El usuario propietario de la transacción y el usuario que se une a la transacción no son los mismos.
ERROR_INVALID_PARAMETER
Un parámetro que no es válido se pasa a la función .
ERROR_INSTALL_ALREADY_RUNNING
No se puede cambiar el propietario mientras una instalación activa está en curso.
ERROR_INVALID_HANDLE_STATE
El identificador de transacción proporcionado no es válido.

Comentarios

Dado que una transacción no puede ser propiedad de más de un proceso a la vez, las funciones creadas en la tabla MsiEmbeddedChainer pueden usar MsiJoinTransaction para solicitar la propiedad de la transacción antes de usar la API de Windows Installer para configurar o instalar una aplicación. El instalador comprueba que no hay ninguna instalación en curso. El instalador comprueba que el proceso que solicita la propiedad y el proceso que posee actualmente el recurso compartido de transacciones un proceso primario en el mismo árbol de procesos. Si la función se realiza correctamente, el proceso que llama a MsiJoinTransaction se convierte en el propietario actual de la transacción.

MsiJoinTransaction establece la interfaz de usuario interna de la nueva instalación en el nivel de interfaz de usuario de la instalación original. Una vez que la nueva instalación posee la transacción, puede llamar a MsiSetInternalUI para cambiar el nivel de interfaz de usuario. Esto permite que la nueva instalación se ejecute en un nivel de interfaz de usuario superior a la instalación original.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.5 en Windows Vista, Windows XP, Windows Server 2003 y Windows Server 2008. Consulte Windows Installer para obtener información sobre el Service Pack mínimo de Windows que requiere una versión de Windows Installer.
Plataforma de destino Windows
Encabezado msi.h
Library Msi.lib
Archivo DLL Msi.dll

Consulte también

Instalaciones de varios paquetes