aboutsummaryrefslogtreecommitdiff
path: root/src/engine/userexperience.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-02-18 10:44:49 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-02-22 20:25:06 -0600
commitb29af5d005c2cc802aa60a123d435042038ba8ef (patch)
treecb86e61b6abb327f8e1ebc33162acfca28bb89e9 /src/engine/userexperience.cpp
parentdbd55be5e707f07eb044c8c7f13c3dfd246148c0 (diff)
downloadwix-b29af5d005c2cc802aa60a123d435042038ba8ef.tar.gz
wix-b29af5d005c2cc802aa60a123d435042038ba8ef.tar.bz2
wix-b29af5d005c2cc802aa60a123d435042038ba8ef.zip
Get all request states up front before building the plan.
Diffstat (limited to 'src/engine/userexperience.cpp')
-rw-r--r--src/engine/userexperience.cpp39
1 files changed, 31 insertions, 8 deletions
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(
111 args.pCommand = pCommand; 111 args.pCommand = pCommand;
112 args.pfnBootstrapperEngineProc = EngineForApplicationProc; 112 args.pfnBootstrapperEngineProc = EngineForApplicationProc;
113 args.pvBootstrapperEngineProcContext = pEngineContext; 113 args.pvBootstrapperEngineProcContext = pEngineContext;
114 args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 1, 30, 0); 114 args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 2, 18, 0);
115 115
116 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); 116 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS);
117 117
@@ -1606,9 +1606,36 @@ LExit:
1606 return hr; 1606 return hr;
1607} 1607}
1608 1608
1609EXTERN_C BAAPI UserExperienceOnPlannedPackage(
1610 __in BURN_USER_EXPERIENCE* pUserExperience,
1611 __in_z LPCWSTR wzPackageId,
1612 __in BOOTSTRAPPER_ACTION_STATE execute,
1613 __in BOOTSTRAPPER_ACTION_STATE rollback
1614 )
1615{
1616 HRESULT hr = S_OK;
1617 BA_ONPLANNEDPACKAGE_ARGS args = { };
1618 BA_ONPLANNEDPACKAGE_RESULTS results = { };
1619
1620 args.cbSize = sizeof(args);
1621 args.wzPackageId = wzPackageId;
1622 args.execute = execute;
1623 args.rollback = rollback;
1624
1625 results.cbSize = sizeof(results);
1626
1627 hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANNEDPACKAGE, &args, &results);
1628 ExitOnFailure(hr, "BA OnPlannedPackage failed.");
1629
1630LExit:
1631 return hr;
1632}
1633
1609EXTERN_C BAAPI UserExperienceOnPlanPackageBegin( 1634EXTERN_C BAAPI UserExperienceOnPlanPackageBegin(
1610 __in BURN_USER_EXPERIENCE* pUserExperience, 1635 __in BURN_USER_EXPERIENCE* pUserExperience,
1611 __in_z LPCWSTR wzPackageId, 1636 __in_z LPCWSTR wzPackageId,
1637 __in BOOTSTRAPPER_PACKAGE_STATE state,
1638 __in BOOL fInstallCondition,
1612 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState 1639 __inout BOOTSTRAPPER_REQUEST_STATE* pRequestedState
1613 ) 1640 )
1614{ 1641{
@@ -1618,6 +1645,8 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageBegin(
1618 1645
1619 args.cbSize = sizeof(args); 1646 args.cbSize = sizeof(args);
1620 args.wzPackageId = wzPackageId; 1647 args.wzPackageId = wzPackageId;
1648 args.state = state;
1649 args.fInstallCondition = fInstallCondition;
1621 args.recommendedState = *pRequestedState; 1650 args.recommendedState = *pRequestedState;
1622 1651
1623 results.cbSize = sizeof(results); 1652 results.cbSize = sizeof(results);
@@ -1640,10 +1669,7 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageComplete(
1640 __in BURN_USER_EXPERIENCE* pUserExperience, 1669 __in BURN_USER_EXPERIENCE* pUserExperience,
1641 __in_z LPCWSTR wzPackageId, 1670 __in_z LPCWSTR wzPackageId,
1642 __in HRESULT hrStatus, 1671 __in HRESULT hrStatus,
1643 __in BOOTSTRAPPER_PACKAGE_STATE state, 1672 __in BOOTSTRAPPER_REQUEST_STATE requested
1644 __in BOOTSTRAPPER_REQUEST_STATE requested,
1645 __in BOOTSTRAPPER_ACTION_STATE execute,
1646 __in BOOTSTRAPPER_ACTION_STATE rollback
1647 ) 1673 )
1648{ 1674{
1649 HRESULT hr = S_OK; 1675 HRESULT hr = S_OK;
@@ -1653,10 +1679,7 @@ EXTERN_C BAAPI UserExperienceOnPlanPackageComplete(
1653 args.cbSize = sizeof(args); 1679 args.cbSize = sizeof(args);
1654 args.wzPackageId = wzPackageId; 1680 args.wzPackageId = wzPackageId;
1655 args.hrStatus = hrStatus; 1681 args.hrStatus = hrStatus;
1656 args.state = state;
1657 args.requested = requested; 1682 args.requested = requested;
1658 args.execute = execute;
1659 args.rollback = rollback;
1660 1683
1661 results.cbSize = sizeof(results); 1684 results.cbSize = sizeof(results);
1662 1685