共用方式為


msiJoinTransaction 函式 (msi.h)

MsiJoinTransaction 函式會要求 Windows Installer 讓目前進程成為安裝多套件安裝之交易的擁有者。

Windows Installer 4.0 和更早版本不支援。 此函式從 Windows Installer 4.5 開始可供使用。

語法

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

參數

[in] hTransactionHandle

交易標識碼,可識別交易,而且是 MsiBeginTransaction 函式所傳回的標識碼。

[in] dwTransactionAttributes

多重套件安裝的屬性。

意義
0
設定 0 或未設定任何值時,Windows Installer 會關閉先前安裝的 UI。
MSITRANSACTION_CHAIN_EMBEDDEDUI
將此屬性設定為要求 Windows Installer 在交易完成之前,不會關閉內嵌 UI。
MSITRANSACTION_JOIN_EXISTING_EMBEDDEDUI
設定此屬性以要求 Windows Installer 從原始安裝傳輸內嵌 UI。 如果原始安裝沒有內嵌UI,則設定此屬性不會執行任何動作。

[out] phChangeOfOwnerEvent

此參數會傳回當 MsiJoinTransaction 函式將交易擁有者變更為新擁有者時所設定之事件的句柄。 目前的擁有者可以使用這個來判斷交易的擁有權何時變更。 離開沒有擁有者的交易將會回復交易。

傳回值

MsiJoinTransaction 函式可以傳回下列值。

意義
ERROR_ACCESS_DENIED
擁有交易的使用者和加入交易的使用者並不相同。
ERROR_INVALID_PARAMETER
無效的參數會傳遞至 函式。
ERROR_INSTALL_ALREADY_RUNNING
在進行中安裝時,無法變更擁有者。
ERROR_INVALID_HANDLE_STATE
所提供的交易標識碼無效。

備註

因為交易一次只能由一個以上的進程擁有,所以撰寫到 MsiEmbeddedChainer 數據表 的函式可以使用 MsiJoinTransaction 來要求交易的擁有權,然後再使用 Windows Installer API 來設定或安裝應用程式。 安裝程式會確認沒有進行中的安裝。 安裝程式會驗證要求擁有權的進程,以及目前擁有交易的進程會在相同的進程樹狀結構中共用父進程。 如果函式成功,呼叫 MsiJoinTransaction 的進程就會成為交易的目前擁有者。

MsiJoinTransaction 會將新安裝的內部 UI 設定為原始安裝的 UI 層級。 在新的安裝擁有交易之後,它可以呼叫 MsiSetInternalUI 來變更 UI 層級。 這可讓新的安裝以比原始安裝更高的UI層級執行。

規格需求

需求
最低支援的用戶端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Vista、Windows XP、Windows Server 2003 和 Windows Server 2008 上的 Windows Installer 4.5。 如需 Windows Installer 版本所需的最低 Windows Service Pack 相關信息,請參閱 Windows Installer Run-Time 需求。
目標平台 Windows
標頭 msi.h
程式庫 Msi.lib
Dll Msi.dll

另請參閱

多個套件安裝