summaryrefslogtreecommitdiff
path: root/src/burn/engine/elevation.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-03-18 20:15:33 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-03-19 12:07:32 -0500
commitfb54576f1d05e82ba47cd718c4c4f8b3bad624c9 (patch)
treeb7d6b30bd3c9294b74874c1a48b20a8da8869a69 /src/burn/engine/elevation.cpp
parent581c320e04949300d6c3bee71fb5fc1a557f9263 (diff)
downloadwix-fb54576f1d05e82ba47cd718c4c4f8b3bad624c9.tar.gz
wix-fb54576f1d05e82ba47cd718c4c4f8b3bad624c9.tar.bz2
wix-fb54576f1d05e82ba47cd718c4c4f8b3bad624c9.zip
Give BA process id and option to wait for cancelled process to exit.
Diffstat (limited to 'src/burn/engine/elevation.cpp')
-rw-r--r--src/burn/engine/elevation.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/burn/engine/elevation.cpp b/src/burn/engine/elevation.cpp
index 636d67ce..3c2872f1 100644
--- a/src/burn/engine/elevation.cpp
+++ b/src/burn/engine/elevation.cpp
@@ -43,6 +43,7 @@ typedef enum _BURN_ELEVATION_MESSAGE_TYPE
43 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_COMPLETE, 43 BURN_ELEVATION_MESSAGE_TYPE_BURN_CACHE_COMPLETE,
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_ERROR, 47 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR,
47 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_MESSAGE, 48 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_MESSAGE,
48 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_FILES_IN_USE, 49 BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_MSI_FILES_IN_USE,
@@ -1812,7 +1813,14 @@ static HRESULT ProcessGenericExecuteMessages(
1812 1813
1813 // read message parameters 1814 // read message parameters
1814 hr = BuffReadNumber((BYTE*)pMsg->pvData, pMsg->cbData, &iData, &message.progress.dwPercentage); 1815 hr = BuffReadNumber((BYTE*)pMsg->pvData, pMsg->cbData, &iData, &message.progress.dwPercentage);
1815 ExitOnFailure(hr, "Failed to progress."); 1816 ExitOnFailure(hr, "Failed to read progress.");
1817 break;
1818
1819 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL:
1820 message.type = GENERIC_EXECUTE_MESSAGE_PROCESS_CANCEL;
1821
1822 hr = BuffReadNumber((BYTE*)pMsg->pvData, pMsg->cbData, &iData, &message.processCancel.dwProcessId);
1823 ExitOnFailure(hr, "Failed to read processId.");
1816 break; 1824 break;
1817 1825
1818 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR: 1826 case BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_ERROR:
@@ -3450,6 +3458,13 @@ static int GenericExecuteMessageHandler(
3450 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROGRESS; 3458 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROGRESS;
3451 break; 3459 break;
3452 3460
3461 case GENERIC_EXECUTE_MESSAGE_PROCESS_CANCEL:
3462 hr = BuffWriteNumber(&pbData, &cbData, pMessage->processCancel.dwProcessId);
3463 ExitOnFailure(hr, "Failed to write progress percentage to message buffer.");
3464
3465 dwMessage = BURN_ELEVATION_MESSAGE_TYPE_EXECUTE_PROCESS_CANCEL;
3466 break;
3467
3453 case GENERIC_EXECUTE_MESSAGE_ERROR: 3468 case GENERIC_EXECUTE_MESSAGE_ERROR:
3454 // serialize message data 3469 // serialize message data
3455 hr = BuffWriteNumber(&pbData, &cbData, pMessage->error.dwErrorCode); 3470 hr = BuffWriteNumber(&pbData, &cbData, pMessage->error.dwErrorCode);