diff options
| author | Nir Bar <nir.bar@panel-sw.co.il> | 2022-12-06 13:22:41 +0200 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-12-12 21:50:39 -0600 |
| commit | 50e24e9cf2084b6cb67b5d8fc509163061408bb6 (patch) | |
| tree | 05c9df57480eb6308c3462c13847b43288f9dbb4 /src/burn/engine/userexperience.cpp | |
| parent | c54f3083489827a1e57c6fd7f3d76f62ddc6e85e (diff) | |
| download | wix-50e24e9cf2084b6cb67b5d8fc509163061408bb6.tar.gz wix-50e24e9cf2084b6cb67b5d8fc509163061408bb6.tar.bz2 wix-50e24e9cf2084b6cb67b5d8fc509163061408bb6.zip | |
Use MSI transaction end result to detect whether reboot is needed
Diffstat (limited to 'src/burn/engine/userexperience.cpp')
| -rw-r--r-- | src/burn/engine/userexperience.cpp | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/src/burn/engine/userexperience.cpp b/src/burn/engine/userexperience.cpp index 28429394..372ca901 100644 --- a/src/burn/engine/userexperience.cpp +++ b/src/burn/engine/userexperience.cpp | |||
| @@ -35,7 +35,7 @@ static HRESULT SendBAMessageFromInactiveEngine( | |||
| 35 | // function definitions | 35 | // function definitions |
| 36 | 36 | ||
| 37 | /******************************************************************* | 37 | /******************************************************************* |
| 38 | UserExperienceParseFromXml - | 38 | UserExperienceParseFromXml - |
| 39 | 39 | ||
| 40 | *******************************************************************/ | 40 | *******************************************************************/ |
| 41 | extern "C" HRESULT UserExperienceParseFromXml( | 41 | extern "C" HRESULT UserExperienceParseFromXml( |
| @@ -72,7 +72,7 @@ LExit: | |||
| 72 | } | 72 | } |
| 73 | 73 | ||
| 74 | /******************************************************************* | 74 | /******************************************************************* |
| 75 | UserExperienceUninitialize - | 75 | UserExperienceUninitialize - |
| 76 | 76 | ||
| 77 | *******************************************************************/ | 77 | *******************************************************************/ |
| 78 | extern "C" void UserExperienceUninitialize( | 78 | extern "C" void UserExperienceUninitialize( |
| @@ -87,7 +87,7 @@ extern "C" void UserExperienceUninitialize( | |||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | /******************************************************************* | 89 | /******************************************************************* |
| 90 | UserExperienceLoad - | 90 | UserExperienceLoad - |
| 91 | 91 | ||
| 92 | *******************************************************************/ | 92 | *******************************************************************/ |
| 93 | extern "C" HRESULT UserExperienceLoad( | 93 | extern "C" HRESULT UserExperienceLoad( |
| @@ -129,7 +129,7 @@ LExit: | |||
| 129 | } | 129 | } |
| 130 | 130 | ||
| 131 | /******************************************************************* | 131 | /******************************************************************* |
| 132 | UserExperienceUnload - | 132 | UserExperienceUnload - |
| 133 | 133 | ||
| 134 | *******************************************************************/ | 134 | *******************************************************************/ |
| 135 | extern "C" HRESULT UserExperienceUnload( | 135 | extern "C" HRESULT UserExperienceUnload( |
| @@ -380,7 +380,7 @@ EXTERN_C BAAPI UserExperienceOnBeginMsiTransactionBegin( | |||
| 380 | args.wzTransactionId = wzTransactionId; | 380 | args.wzTransactionId = wzTransactionId; |
| 381 | 381 | ||
| 382 | results.cbSize = sizeof(results); | 382 | results.cbSize = sizeof(results); |
| 383 | 383 | ||
| 384 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN, &args, &results); | 384 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONBEGINMSITRANSACTIONBEGIN, &args, &results); |
| 385 | ExitOnFailure(hr, "BA OnBeginMsiTransactionBegin failed."); | 385 | ExitOnFailure(hr, "BA OnBeginMsiTransactionBegin failed."); |
| 386 | 386 | ||
| @@ -1017,7 +1017,7 @@ EXTERN_C BAAPI UserExperienceOnCommitMsiTransactionBegin( | |||
| 1017 | args.wzTransactionId = wzTransactionId; | 1017 | args.wzTransactionId = wzTransactionId; |
| 1018 | 1018 | ||
| 1019 | results.cbSize = sizeof(results); | 1019 | results.cbSize = sizeof(results); |
| 1020 | 1020 | ||
| 1021 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN, &args, &results); | 1021 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONBEGIN, &args, &results); |
| 1022 | ExitOnFailure(hr, "BA OnCommitMsiTransactionBegin failed."); | 1022 | ExitOnFailure(hr, "BA OnCommitMsiTransactionBegin failed."); |
| 1023 | 1023 | ||
| @@ -1033,8 +1033,10 @@ LExit: | |||
| 1033 | EXTERN_C BAAPI UserExperienceOnCommitMsiTransactionComplete( | 1033 | EXTERN_C BAAPI UserExperienceOnCommitMsiTransactionComplete( |
| 1034 | __in BURN_USER_EXPERIENCE* pUserExperience, | 1034 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 1035 | __in LPCWSTR wzTransactionId, | 1035 | __in LPCWSTR wzTransactionId, |
| 1036 | __in HRESULT hrStatus | 1036 | __in HRESULT hrStatus, |
| 1037 | ) | 1037 | __in BOOTSTRAPPER_APPLY_RESTART restart, |
| 1038 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION* pAction | ||
| 1039 | ) | ||
| 1038 | { | 1040 | { |
| 1039 | HRESULT hr = S_OK; | 1041 | HRESULT hr = S_OK; |
| 1040 | BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS args = { }; | 1042 | BA_ONCOMMITMSITRANSACTIONCOMPLETE_ARGS args = { }; |
| @@ -1043,12 +1045,17 @@ EXTERN_C BAAPI UserExperienceOnCommitMsiTransactionComplete( | |||
| 1043 | args.cbSize = sizeof(args); | 1045 | args.cbSize = sizeof(args); |
| 1044 | args.wzTransactionId = wzTransactionId; | 1046 | args.wzTransactionId = wzTransactionId; |
| 1045 | args.hrStatus = hrStatus; | 1047 | args.hrStatus = hrStatus; |
| 1048 | args.restart = restart; | ||
| 1049 | args.recommendation = *pAction; | ||
| 1046 | 1050 | ||
| 1047 | results.cbSize = sizeof(results); | 1051 | results.cbSize = sizeof(results); |
| 1052 | results.action = *pAction; | ||
| 1048 | 1053 | ||
| 1049 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE, &args, &results); | 1054 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONCOMMITMSITRANSACTIONCOMPLETE, &args, &results); |
| 1050 | ExitOnFailure(hr, "BA OnCommitMsiTransactionComplete failed."); | 1055 | ExitOnFailure(hr, "BA OnCommitMsiTransactionComplete failed."); |
| 1051 | 1056 | ||
| 1057 | *pAction = results.action; | ||
| 1058 | |||
| 1052 | LExit: | 1059 | LExit: |
| 1053 | return hr; | 1060 | return hr; |
| 1054 | } | 1061 | } |
| @@ -1908,7 +1915,7 @@ EXTERN_C BAAPI UserExperienceOnPauseAUBegin( | |||
| 1908 | args.cbSize = sizeof(args); | 1915 | args.cbSize = sizeof(args); |
| 1909 | 1916 | ||
| 1910 | results.cbSize = sizeof(results); | 1917 | results.cbSize = sizeof(results); |
| 1911 | 1918 | ||
| 1912 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN, &args, &results); | 1919 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONPAUSEAUTOMATICUPDATESBEGIN, &args, &results); |
| 1913 | ExitOnFailure(hr, "BA OnPauseAUBegin failed."); | 1920 | ExitOnFailure(hr, "BA OnPauseAUBegin failed."); |
| 1914 | 1921 | ||
| @@ -2523,7 +2530,7 @@ EXTERN_C BAAPI UserExperienceOnRollbackMsiTransactionBegin( | |||
| 2523 | args.wzTransactionId = wzTransactionId; | 2530 | args.wzTransactionId = wzTransactionId; |
| 2524 | 2531 | ||
| 2525 | results.cbSize = sizeof(results); | 2532 | results.cbSize = sizeof(results); |
| 2526 | 2533 | ||
| 2527 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN, &args, &results); | 2534 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONBEGIN, &args, &results); |
| 2528 | ExitOnFailure(hr, "BA OnRollbackMsiTransactionBegin failed."); | 2535 | ExitOnFailure(hr, "BA OnRollbackMsiTransactionBegin failed."); |
| 2529 | 2536 | ||
| @@ -2534,7 +2541,9 @@ LExit: | |||
| 2534 | EXTERN_C BAAPI UserExperienceOnRollbackMsiTransactionComplete( | 2541 | EXTERN_C BAAPI UserExperienceOnRollbackMsiTransactionComplete( |
| 2535 | __in BURN_USER_EXPERIENCE* pUserExperience, | 2542 | __in BURN_USER_EXPERIENCE* pUserExperience, |
| 2536 | __in LPCWSTR wzTransactionId, | 2543 | __in LPCWSTR wzTransactionId, |
| 2537 | __in HRESULT hrStatus | 2544 | __in HRESULT hrStatus, |
| 2545 | __in BOOTSTRAPPER_APPLY_RESTART restart, | ||
| 2546 | __inout BOOTSTRAPPER_EXECUTEMSITRANSACTIONCOMPLETE_ACTION *pAction | ||
| 2538 | ) | 2547 | ) |
| 2539 | { | 2548 | { |
| 2540 | HRESULT hr = S_OK; | 2549 | HRESULT hr = S_OK; |
| @@ -2544,12 +2553,17 @@ EXTERN_C BAAPI UserExperienceOnRollbackMsiTransactionComplete( | |||
| 2544 | args.cbSize = sizeof(args); | 2553 | args.cbSize = sizeof(args); |
| 2545 | args.wzTransactionId = wzTransactionId; | 2554 | args.wzTransactionId = wzTransactionId; |
| 2546 | args.hrStatus = hrStatus; | 2555 | args.hrStatus = hrStatus; |
| 2556 | args.restart = restart; | ||
| 2557 | args.recommendation = *pAction; | ||
| 2547 | 2558 | ||
| 2548 | results.cbSize = sizeof(results); | 2559 | results.cbSize = sizeof(results); |
| 2560 | results.action = *pAction; | ||
| 2549 | 2561 | ||
| 2550 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE, &args, &results); | 2562 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONROLLBACKMSITRANSACTIONCOMPLETE, &args, &results); |
| 2551 | ExitOnFailure(hr, "BA OnRollbackMsiTransactionComplete failed."); | 2563 | ExitOnFailure(hr, "BA OnRollbackMsiTransactionComplete failed."); |
| 2552 | 2564 | ||
| 2565 | *pAction = results.action; | ||
| 2566 | |||
| 2553 | LExit: | 2567 | LExit: |
| 2554 | return hr; | 2568 | return hr; |
| 2555 | } | 2569 | } |
| @@ -2651,7 +2665,7 @@ EXTERN_C BAAPI UserExperienceOnSystemRestorePointBegin( | |||
| 2651 | args.cbSize = sizeof(args); | 2665 | args.cbSize = sizeof(args); |
| 2652 | 2666 | ||
| 2653 | results.cbSize = sizeof(results); | 2667 | results.cbSize = sizeof(results); |
| 2654 | 2668 | ||
| 2655 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN, &args, &results); | 2669 | hr = SendBAMessage(pUserExperience, BOOTSTRAPPER_APPLICATION_MESSAGE_ONSYSTEMRESTOREPOINTBEGIN, &args, &results); |
| 2656 | ExitOnFailure(hr, "BA OnSystemRestorePointBegin failed."); | 2670 | ExitOnFailure(hr, "BA OnSystemRestorePointBegin failed."); |
| 2657 | 2671 | ||
