diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2020-05-14 19:59:06 +1000 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2020-05-16 21:42:51 +1000 |
| commit | 50cb451bcee148afd9768086c1bb5ed4f75562df (patch) | |
| tree | b4a28ef01446f2afd02b803af28ee6c628816cee /src/engine/userexperience.cpp | |
| parent | d232c5621fe336b1f563b69be7637c93e795e151 (diff) | |
| download | wix-50cb451bcee148afd9768086c1bb5ed4f75562df.tar.gz wix-50cb451bcee148afd9768086c1bb5ed4f75562df.tar.bz2 wix-50cb451bcee148afd9768086c1bb5ed4f75562df.zip | |
WIXFEAT:6164 Give BA control over UI level and handler.
Diffstat (limited to 'src/engine/userexperience.cpp')
| -rw-r--r-- | src/engine/userexperience.cpp | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/src/engine/userexperience.cpp b/src/engine/userexperience.cpp index 24fc1ec7..dd59a431 100644 --- a/src/engine/userexperience.cpp +++ b/src/engine/userexperience.cpp | |||
| @@ -97,7 +97,7 @@ extern "C" HRESULT UserExperienceLoad( | |||
| 97 | args.pCommand = pCommand; | 97 | args.pCommand = pCommand; |
| 98 | args.pfnBootstrapperEngineProc = EngineForApplicationProc; | 98 | args.pfnBootstrapperEngineProc = EngineForApplicationProc; |
| 99 | args.pvBootstrapperEngineProcContext = pEngineContext; | 99 | args.pvBootstrapperEngineProcContext = pEngineContext; |
| 100 | args.qwEngineAPIVersion = MAKEQWORDVERSION(0, 0, 0, 7); // TODO: need to decide whether to keep this, and if so when to update it. | 100 | args.qwEngineAPIVersion = MAKEQWORDVERSION(2020, 5, 14, 0); |
| 101 | 101 | ||
| 102 | results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); | 102 | results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); |
| 103 | 103 | ||
| @@ -1211,7 +1211,9 @@ EXTERN_C BAAPI UserExperienceOnExecutePackageBegin( | |||
| 1211 | __in BURN_USER_EXPERIENCE* pUserExperience, | 1211 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 1212 | __in_z LPCWSTR wzPackageId, | 1212 | __in_z LPCWSTR wzPackageId, |
| 1213 | __in BOOL fExecute, | 1213 | __in BOOL fExecute, |
| 1214 | __in BOOTSTRAPPER_ACTION_STATE action | 1214 | __in BOOTSTRAPPER_ACTION_STATE action, |
| 1215 | __in INSTALLUILEVEL uiLevel, | ||
| 1216 | __in BOOL fDisableExternalUiHandler | ||
| 1215 | ) | 1217 | ) |
| 1216 | { | 1218 | { |
| 1217 | HRESULT hr = S_OK; | 1219 | HRESULT hr = S_OK; |
| @@ -1222,6 +1224,8 @@ EXTERN_C BAAPI UserExperienceOnExecutePackageBegin( | |||
| 1222 | args.wzPackageId = wzPackageId; | 1224 | args.wzPackageId = wzPackageId; |
| 1223 | args.fExecute = fExecute; | 1225 | args.fExecute = fExecute; |
| 1224 | args.action = action; | 1226 | args.action = action; |
| 1227 | args.uiLevel = uiLevel; | ||
| 1228 | args.fDisableExternalUiHandler = fDisableExternalUiHandler; | ||
| 1225 | 1229 | ||
| 1226 | results.cbSize = sizeof(results); | 1230 | results.cbSize = sizeof(results); |
| 1227 | 1231 | ||
| @@ -1526,6 +1530,45 @@ LExit: | |||
| 1526 | return hr; | 1530 | return hr; |
| 1527 | } | 1531 | } |
| 1528 | 1532 | ||
| 1533 | EXTERN_C BAAPI UserExperienceOnPlanMsiPackage( | ||
| 1534 | __in BURN_USER_EXPERIENCE* pUserExperience, | ||
| 1535 | __in_z LPCWSTR wzPackageId, | ||
| 1536 | __in BOOL fExecute, | ||
| 1537 | __in BOOTSTRAPPER_ACTION_STATE action, | ||
| 1538 | __inout BURN_MSI_PROPERTY* pActionMsiProperty, | ||
| 1539 | __inout INSTALLUILEVEL* pUiLevel, | ||
| 1540 | __inout BOOL* pfDisableExternalUiHandler | ||
| 1541 | ) | ||
| 1542 | { | ||
| 1543 | HRESULT hr = S_OK; | ||
| 1544 | BA_ONPLANMSIPACKAGE_ARGS args = { }; | ||
| 1545 | BA_ONPLANMSIPACKAGE_RESULTS results = { }; | ||
| 1546 | |||
| 1547 | args.cbSize = sizeof(args); | ||
| 1548 | args.wzPackageId = wzPackageId; | ||
| 1549 | args.fExecute = fExecute; | ||
| 1550 | args.action = action; | ||
| 1551 | |||
| 1552 | results.cbSize = sizeof(results); | ||
| 1553 | results.actionMsiProperty = *pActionMsiProperty; | ||
| 1554 | results.uiLevel = *pUiLevel; | ||
| 1555 | results.fDisableExternalUiHandler = *pfDisableExternalUiHandler; | ||
| 1556 | |||
| 1557 | hr = pUserExperience->pfnBAProc(BOOTSTRAPPER_APPLICATION_MESSAGE_ONPLANMSIPACKAGE, &args, &results, pUserExperience->pvBAProcContext); | ||
| 1558 | ExitOnFailure(hr, "BA OnPlanMsiPackage failed."); | ||
| 1559 | |||
| 1560 | if (results.fCancel) | ||
| 1561 | { | ||
| 1562 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_USEREXIT); | ||
| 1563 | } | ||
| 1564 | *pActionMsiProperty = results.actionMsiProperty; | ||
| 1565 | *pUiLevel = results.uiLevel; | ||
| 1566 | *pfDisableExternalUiHandler = results.fDisableExternalUiHandler; | ||
| 1567 | |||
| 1568 | LExit: | ||
| 1569 | return hr; | ||
| 1570 | } | ||
| 1571 | |||
| 1529 | EXTERN_C BAAPI UserExperienceOnPlanPackageBegin( | 1572 | EXTERN_C BAAPI UserExperienceOnPlanPackageBegin( |
| 1530 | __in BURN_USER_EXPERIENCE* pUserExperience, | 1573 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 1531 | __in_z LPCWSTR wzPackageId, | 1574 | __in_z LPCWSTR wzPackageId, |
