From b29af5d005c2cc802aa60a123d435042038ba8ef Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 18 Feb 2021 10:44:49 -0600 Subject: Get all request states up front before building the plan. --- src/engine/userexperience.cpp | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'src/engine/userexperience.cpp') diff --git a/src/engine/userexperience.cpp b/src/engine/userexperience.cpp index 12c3f6df..88b07d68 100644 --- a/src/engine/userexperience.cpp +++ b/src/engine/userexperience.cpp @@ -111,7 +111,7 @@ extern "C" HRESULT UserExperienceLoad( args.pCommand = pCommand; args.pfnBootstrapperEngineProc = EngineForApplicationProc; args.pvBootstrapperEngineProcContext = pEngineContext; - args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 1, 30, 0); + args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 2, 18, 0); results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); @@ -1606,9 +1606,36 @@ LExit: return hr; } +EXTERN_C BAAPI UserExperienceOnPlannedPackage( + __in BURN_USER_EXPERIENCE* pUserExperience, + __in_z LPCWSTR wzPackageId, + __in BOOTSTRAPPER_ACTION_STATE execute, + __in BOOTSTRAPPER_ACTION_STATE rollback + ) +{ + HRESULT hr = S_OK; + BA_ONPLANNEDPACKAGE_ARGS args = { }; + BA_ONPLANNEDPACKAGE_RESULTS results = { }; + + args.cbSize = sizeof(args); + args.wzPackageId = wzPackageId; + args.execute = execute; + args.rollback = rollback; + + results.cbSize = sizeof(results); + + hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, &args, &results); + ExitOnFailure(hr, "BA OnPlannedPackage failed."); + +LExit: + return hr; +} + EXTERN_C BAAPI UserExperienceOnPlanPackageBegin( __in BURN_USER_EXPERIENCE* pUserExperience, __in_z LPCWSTR wzPackageId, + __in BOOTSTRAPPER_PACKAGE_STATE state, + __in BOOL fInstallCondition, __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState ) { @@ -1618,6 +1645,8 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageBegin( args.cbSize = sizeof(args); args.wzPackageId = wzPackageId; + args.state = state; + args.fInstallCondition = fInstallCondition; args.recommendedState = *pRequestedState; results.cbSize = sizeof(results); @@ -1640,10 +1669,7 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageComplete( __in BURN_USER_EXPERIENCE* pUserExperience, __in_z LPCWSTR wzPackageId, __in HRESULT hrStatus, - __in BOOTSTRAPPER_PACKAGE_STATE state, - __in BOOTSTRAPPER_REQUEST_STATE requested, - __in BOOTSTRAPPER_ACTION_STATE execute, - __in BOOTSTRAPPER_ACTION_STATE rollback + __in BOOTSTRAPPER_REQUEST_STATE requested ) { HRESULT hr = S_OK; @@ -1653,10 +1679,7 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageComplete( args.cbSize = sizeof(args); args.wzPackageId = wzPackageId; args.hrStatus = hrStatus; - args.state = state; args.requested = requested; - args.execute = execute; - args.rollback = rollback; results.cbSize = sizeof(results); -- cgit v1.2.3-55-g6feb