summaryrefslogtreecommitdiff
path: root/src/burn/engine/elevation.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-03-18 20:16:07 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-03-19 12:07:32 -0500
commitfbc1a73743368211d5d8c7fc0625adf6eb9ca50c (patch)
treec314d72b4b25afab7a27be664a1bffa5bdd80b3a /src/burn/engine/elevation.cpp
parentfb54576f1d05e82ba47cd718c4c4f8b3bad624c9 (diff)
downloadwix-fbc1a73743368211d5d8c7fc0625adf6eb9ca50c.tar.gz
wix-fbc1a73743368211d5d8c7fc0625adf6eb9ca50c.tar.bz2
wix-fbc1a73743368211d5d8c7fc0625adf6eb9ca50c.zip
Add checkpoint so Exe and Msu packages rollback after being cancelled.
Fixes 5950
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r--src/burn/engine/elevation.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp
index 3c2872f1..ea56e242 100644
--- a/src/burn/engine/elevation.cpp
+++ b/src/burn/engine/elevation.cpp
@@ -44,6 +44,8 @@ typedef enum _BURN_ELEVATION_MESSAGE_TYPE
44 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS, 44 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_SUCCESS,
45 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROGRESS, 45 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROGRESS,
46 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL, 46 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL,
47 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_STARTED,
48 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_COMPLETED,
47 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR, 49 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR,
48 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_MESSAGE, 50 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_MESSAGE,
49 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_FILES_IN_USE, 51 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_FILES_IN_USE,
@@ -1823,6 +1825,14 @@ static HRESULT ProcessGenericExecuteMessages(
1823 ExitOnFailure(hr, "Failed to read processId."); 1825 ExitOnFailure(hr, "Failed to read processId.");
1824 break; 1826 break;
1825 1827
1828 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_STARTED:
1829 message.type = GENERIC_EXECUTE_MESSAGE_PROCESS_STARTED;
1830 break;
1831
1832 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_COMPLETED:
1833 message.type = GENERIC_EXECUTE_MESSAGE_PROCESS_COMPLETED;
1834 break;
1835
1826 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR: 1836 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR:
1827 message.type = GENERIC_EXECUTE_MESSAGE_ERROR; 1837 message.type = GENERIC_EXECUTE_MESSAGE_ERROR;
1828 1838
@@ -3465,6 +3475,14 @@ static int GenericExecuteMessageHandler(
3465 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL; 3475 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL;
3466 break; 3476 break;
3467 3477
3478 case GENERIC_EXECUTE_MESSAGE_PROCESS_STARTED:
3479 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_STARTED;
3480 break;
3481
3482 case GENERIC_EXECUTE_MESSAGE_PROCESS_COMPLETED:
3483 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_COMPLETED;
3484 break;
3485
3468 case GENERIC_EXECUTE_MESSAGE_ERROR: 3486 case GENERIC_EXECUTE_MESSAGE_ERROR:
3469 // serialize message data 3487 // serialize message data
3470 hr = BuffWriteNumber(&pbData, &cbData, pMessage->error.dwErrorCode); 3488 hr = BuffWriteNumber(&pbData, &cbData, pMessage->error.dwErrorCode);