diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-03-18 20:16:07 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-03-19 12:07:32 -0500 |
| commit | fbc1a73743368211d5d8c7fc0625adf6eb9ca50c (patch) | |
| tree | c314d72b4b25afab7a27be664a1bffa5bdd80b3a /src/burn/engine/msuengine.cpp | |
| parent | fb54576f1d05e82ba47cd718c4c4f8b3bad624c9 (diff) | |
| download | wix-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/msuengine.cpp')
| -rw-r--r-- | src/burn/engine/msuengine.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/burn/engine/msuengine.cpp b/src/burn/engine/msuengine.cpp index 2f1fb61c..2591973f 100644 --- a/src/burn/engine/msuengine.cpp +++ b/src/burn/engine/msuengine.cpp | |||
| @@ -222,30 +222,33 @@ extern "C" HRESULT MsuEnginePlanAddPackage( | |||
| 222 | hr = DependencyPlanPackage(NULL, pPackage, pPlan); | 222 | hr = DependencyPlanPackage(NULL, pPackage, pPlan); |
| 223 | ExitOnFailure(hr, "Failed to plan package dependency actions."); | 223 | ExitOnFailure(hr, "Failed to plan package dependency actions."); |
| 224 | 224 | ||
| 225 | // add execute action | 225 | // add rollback action |
| 226 | if (BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->execute) | 226 | if (BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->rollback) |
| 227 | { | 227 | { |
| 228 | hr = PlanAppendExecuteAction(pPlan, &pAction); | 228 | hr = PlanAppendRollbackAction(pPlan, &pAction); |
| 229 | ExitOnFailure(hr, "Failed to append execute action."); | 229 | ExitOnFailure(hr, "Failed to append rollback action."); |
| 230 | 230 | ||
| 231 | pAction->type = BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE; | 231 | pAction->type = BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE; |
| 232 | pAction->msuPackage.pPackage = pPackage; | 232 | pAction->msuPackage.pPackage = pPackage; |
| 233 | pAction->msuPackage.action = pPackage->execute; | 233 | pAction->msuPackage.action = pPackage->rollback; |
| 234 | 234 | ||
| 235 | LoggingSetPackageVariable(pPackage, NULL, FALSE, pLog, pVariables, &pAction->msuPackage.sczLogPath); // ignore errors. | 235 | LoggingSetPackageVariable(pPackage, NULL, TRUE, pLog, pVariables, &pAction->msuPackage.sczLogPath); // ignore errors. |
| 236 | |||
| 237 | hr = PlanExecuteCheckpoint(pPlan); | ||
| 238 | ExitOnFailure(hr, "Failed to append execute checkpoint."); | ||
| 236 | } | 239 | } |
| 237 | 240 | ||
| 238 | // add rollback action | 241 | // add execute action |
| 239 | if (BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->rollback) | 242 | if (BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->execute) |
| 240 | { | 243 | { |
| 241 | hr = PlanAppendRollbackAction(pPlan, &pAction); | 244 | hr = PlanAppendExecuteAction(pPlan, &pAction); |
| 242 | ExitOnFailure(hr, "Failed to append rollback action."); | 245 | ExitOnFailure(hr, "Failed to append execute action."); |
| 243 | 246 | ||
| 244 | pAction->type = BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE; | 247 | pAction->type = BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE; |
| 245 | pAction->msuPackage.pPackage = pPackage; | 248 | pAction->msuPackage.pPackage = pPackage; |
| 246 | pAction->msuPackage.action = pPackage->rollback; | 249 | pAction->msuPackage.action = pPackage->execute; |
| 247 | 250 | ||
| 248 | LoggingSetPackageVariable(pPackage, NULL, TRUE, pLog, pVariables, &pAction->msuPackage.sczLogPath); // ignore errors. | 251 | LoggingSetPackageVariable(pPackage, NULL, FALSE, pLog, pVariables, &pAction->msuPackage.sczLogPath); // ignore errors. |
| 249 | } | 252 | } |
| 250 | 253 | ||
| 251 | LExit: | 254 | LExit: |
