次の方法で共有


MsiJoinTransaction 関数 (msi.h)

MsiJoinTransaction 関数は、Windows インストーラーが、現在のプロセスを複数パッケージ インストールをインストールするトランザクションの所有者にすることを要求します。

Windows インストーラー 4.0 以前: サポートされていません。 この関数は、Windows インストーラー 4.5 以降で使用できます。

構文

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

パラメーター

[in] hTransactionHandle

トランザクション ID。トランザクションを識別し、 MsiBeginTransaction 関数によって返される識別子です。

[in] dwTransactionAttributes

複数パッケージインストールの属性。

意味
0
0 または値が設定されていない場合、Windows インストーラーは以前のインストールから UI を閉じます。
MSITRANSACTION_CHAIN_EMBEDDEDUI
この属性を設定して、トランザクションが完了するまで Windows インストーラーが埋め込み UI をシャットダウンしないように要求します。
MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI
この属性を設定して、Windows インストーラーが埋め込み UI を元のインストールから転送するように要求します。 元のインストールに UI が埋め込まれていない場合、この属性を設定しても何も行われません。

[out] phChangeOfOwnerEvent

このパラメーターは、 MsiJoinTransaction 関数がトランザクションの所有者を新しい所有者に変更したときに設定されたイベントへのハンドルを返します。 現在の所有者はこれを使用して、トランザクションの所有権がいつ変更されたかを判断できます。 所有者なしでトランザクションを終了すると、トランザクションがロールバックされます。

戻り値

MsiJoinTransaction 関数は、次の値を返すことができます。

意味
ERROR_ACCESS_DENIED
トランザクションを所有するユーザーとトランザクションに参加するユーザーは同じではありません。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されます。
ERROR_INSTALL_ALREADY_RUNNING
アクティブなインストールの進行中は、所有者を変更できません。
ERROR_INVALID_HANDLE_STATE
指定されたトランザクション ID が無効です。

注釈

トランザクションは一度に複数のプロセスで所有できないため、 MsiEmbeddedChainer テーブル に作成された関数は、Windows インストーラー API を使用してアプリケーションを構成またはインストールする前に、 MsiJoinTransaction を使用してトランザクションの所有権を要求できます。 インストーラーは、進行中のインストールがないことを確認します。 インストーラーは、所有権を要求するプロセスと、トランザクションを現在所有しているプロセスが、同じプロセス ツリー内の親プロセスを共有していることを確認します。 関数が成功すると、 MsiJoinTransaction を呼び出すプロセスがトランザクションの現在の所有者になります。

MsiJoinTransaction は、新しいインストールの内部 UI を元のインストールの UI レベルに設定します。 新しいインストールでトランザクションが所有されると、 MsiSetInternalUI を 呼び出して UI レベルを変更できます。 これにより、新しいインストールを元のインストールよりも高い UI レベルで実行できます。

要件

要件
サポートされている最小のクライアント Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Vista、Windows XP、Windows Server 2003、Windows Server 2008 の Windows インストーラー 4.5。 Windows インストーラーのバージョン別に必須となる最小 Windows サービス パックに関する詳細については、Windows インストーラーの実行時の要件に関する記事を参照してください。
対象プラットフォーム Windows
ヘッダー msi.h
Library Msi.lib
[DLL] Msi.dll

こちらもご覧ください

複数のパッケージのインストール