From 0042e3d4554a0d92e1da6141854b0f1aafa07d5b Mon Sep 17 00:00:00 2001 From: Nir Bar Date: Wed, 11 Aug 2021 15:37:34 -0500 Subject: Allow BA to opt out of MSI transaction. --- src/burn/engine/userexperience.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/burn/engine/userexperience.cpp') diff --git a/src/burn/engine/userexperience.cpp b/src/burn/engine/userexperience.cpp index f48e60de..c974f4d4 100644 --- a/src/burn/engine/userexperience.cpp +++ b/src/burn/engine/userexperience.cpp @@ -104,7 +104,7 @@ extern "C" HRESULT UserExperienceLoad( args.pCommand = pCommand; args.pfnBootstrapperEngineProc = EngineForApplicationProc; args.pvBootstrapperEngineProcContext = pEngineContext; - args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 4, 27, 0); + args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 8, 10, 0); results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); @@ -2056,6 +2056,36 @@ LExit: return hr; } +EXTERN_C BAAPI UserExperienceOnPlanRollbackBoundary( + __in BURN_USER_EXPERIENCE* pUserExperience, + __in_z LPCWSTR wzRollbackBoundaryId, + __inout BOOL* pfTransaction + ) +{ + HRESULT hr = S_OK; + BA_ONPLANROLLBACKBOUNDARY_ARGS args = { }; + BA_ONPLANROLLBACKBOUNDARY_RESULTS results = { }; + + args.cbSize = sizeof(args); + args.wzRollbackBoundaryId = wzRollbackBoundaryId; + args.fRecommendedTransaction = *pfTransaction; + + results.cbSize = sizeof(results); + results.fTransaction = *pfTransaction; + + hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANROLLBACKBOUNDARY, &args, &results); + ExitOnFailure(hr, "BA OnPlanRollbackBoundary failed."); + + if (results.fCancel) + { + hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); + } + *pfTransaction = results.fTransaction; + +LExit: + return hr; +} + EXTERN_C BAAPI UserExperienceOnPlanPatchTarget( __in BURN_USER_EXPERIENCE* pUserExperience, __in_z LPCWSTR wzPackageId, -- cgit v1.2.3-55-g6feb