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 或未設定任何值時,Windows Installer 會關閉先前安裝的 UI。 |
|
將此屬性設定為要求 Windows Installer 在交易完成之前,不會關閉內嵌 UI。 |
|
設定此屬性以要求 Windows Installer 從原始安裝傳輸內嵌 UI。 如果原始安裝沒有內嵌UI,則設定此屬性不會執行任何動作。 |
[out] phChangeOfOwnerEvent
此參數會傳回當 MsiJoinTransaction 函式將交易擁有者變更為新擁有者時所設定之事件的句柄。 目前的擁有者可以使用這個來判斷交易的擁有權何時變更。 離開沒有擁有者的交易將會回復交易。
傳回值
MsiJoinTransaction 函式可以傳回下列值。
值 | 意義 |
---|---|
|
擁有交易的使用者和加入交易的使用者並不相同。 |
|
無效的參數會傳遞至 函式。 |
|
在進行中安裝時,無法變更擁有者。 |
|
所提供的交易標識碼無效。 |
備註
因為交易一次只能由一個以上的進程擁有,所以撰寫到 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 |