MsiJoinTransaction, fonction (msi.h)

La fonction MsiJoinTransaction demande à Windows Installer de faire du processus en cours le propriétaire de la transaction installant l’installation de plusieurs packages.

Windows Installer 4.0 et versions antérieures : Non pris en charge. Cette fonction est disponible à partir de Windows Installer 4.5.

Syntaxe

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

Paramètres

[in] hTransactionHandle

ID de transaction, qui identifie la transaction et est l’identificateur retourné par la fonction MsiBeginTransaction .

[in] dwTransactionAttributes

Attributs de l’installation à plusieurs packages.

Valeur Signification
0
Lorsque 0 ou aucune valeur n’est définie, Windows Installer ferme l’interface utilisateur de l’installation précédente.
MSITRANSACTION_CHAIN_EMBEDDEDUI
Définissez cet attribut pour demander à Windows Installer de ne pas arrêter l’interface utilisateur incorporée tant que la transaction n’est pas terminée.
MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI
Définissez cet attribut pour demander que Windows Installer transfère l’interface utilisateur incorporée à partir de l’installation d’origine. Si l’installation d’origine n’a pas d’interface utilisateur incorporée, la définition de cet attribut n’a rien à faire.

[out] phChangeOfOwnerEvent

Ce paramètre retourne un handle à un événement qui est défini lorsque la fonction MsiJoinTransaction change le propriétaire de la transaction en un nouveau propriétaire. Le propriétaire actuel peut l’utiliser pour déterminer quand la propriété de la transaction a changé. Le fait de laisser une transaction sans propriétaire annule la transaction.

Valeur retournée

La fonction MsiJoinTransaction peut retourner les valeurs suivantes.

Valeur Signification
ERROR_ACCESS_DENIED
L’utilisateur propriétaire de la transaction et l’utilisateur qui joint la transaction ne sont pas identiques.
ERROR_INVALID_PARAMETER
Un paramètre non valide est passé à la fonction .
ERROR_INSTALL_ALREADY_RUNNING
Le propriétaire ne peut pas être modifié lorsqu’une installation active est en cours.
ERROR_INVALID_HANDLE_STATE
L’ID de transaction fourni n’est pas valide.

Remarques

Étant donné qu’une transaction ne peut pas appartenir à plusieurs processus à la fois, les fonctions créées dans la table MsiEmbeddedChainer peuvent utiliser MsiJoinTransaction pour demander la propriété de la transaction avant d’utiliser l’API Windows Installer pour configurer ou installer une application. Le programme d’installation vérifie qu’aucune installation n’est en cours. Le programme d’installation vérifie que le processus qui demande la propriété et le processus qui possède actuellement la transaction partagent un processus parent dans la même arborescence de processus. Si la fonction réussit, le processus qui appelle MsiJoinTransaction devient le propriétaire actuel de la transaction.

MsiJoinTransaction définit l’interface utilisateur interne de la nouvelle installation au niveau de l’interface utilisateur de l’installation d’origine. Une fois que la nouvelle installation possède la transaction, elle peut appeler MsiSetInternalUI pour modifier le niveau de l’interface utilisateur. Cela permet à la nouvelle installation de s’exécuter à un niveau d’interface utilisateur supérieur à celui de l’installation d’origine.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.5 sur Windows Vista, Windows XP, Windows Server 2003 et Windows Server 2008. Pour plus d’informations sur le Service Pack Windows requis par une version de Windows Installer, consultez Configuration requise pour le runtime Windows.
Plateforme cible Windows
En-tête msi.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Installations de plusieurs packages