aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/plan.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-12-12 21:52:29 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-12-13 14:44:02 -0600
commit72b024f33d9630432e8aad2bf8261051a0df1e41 (patch)
tree3ff13dffd1a3f93b87f789716bf4c47268a845d9 /src/burn/engine/plan.cpp
parente223ab393bdf04a9c3d0d2144b48a10d7b2650a2 (diff)
downloadwix-72b024f33d9630432e8aad2bf8261051a0df1e41.tar.gz
wix-72b024f33d9630432e8aad2bf8261051a0df1e41.tar.bz2
wix-72b024f33d9630432e8aad2bf8261051a0df1e41.zip
After rolling back in a non-vital rollback boundary, skip to its end.
Fixes #6309
Diffstat (limited to 'src/burn/engine/plan.cpp')
-rw-r--r--src/burn/engine/plan.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp
index 5aad8c9b..0f63a945 100644
--- a/src/burn/engine/plan.cpp
+++ b/src/burn/engine/plan.cpp
@@ -1724,14 +1724,14 @@ extern "C" HRESULT PlanRollbackBoundaryBegin(
1724 hr = PlanAppendExecuteAction(pPlan, &pExecuteAction); 1724 hr = PlanAppendExecuteAction(pPlan, &pExecuteAction);
1725 ExitOnFailure(hr, "Failed to append rollback boundary begin action."); 1725 ExitOnFailure(hr, "Failed to append rollback boundary begin action.");
1726 1726
1727 pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY; 1727 pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START;
1728 pExecuteAction->rollbackBoundary.pRollbackBoundary = pRollbackBoundary; 1728 pExecuteAction->rollbackBoundary.pRollbackBoundary = pRollbackBoundary;
1729 1729
1730 // Add begin rollback boundary to rollback plan. 1730 // Add begin rollback boundary to rollback plan.
1731 hr = PlanAppendRollbackAction(pPlan, &pExecuteAction); 1731 hr = PlanAppendRollbackAction(pPlan, &pExecuteAction);
1732 ExitOnFailure(hr, "Failed to append rollback boundary begin action."); 1732 ExitOnFailure(hr, "Failed to append rollback boundary begin action.");
1733 1733
1734 pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY; 1734 pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START;
1735 pExecuteAction->rollbackBoundary.pRollbackBoundary = pRollbackBoundary; 1735 pExecuteAction->rollbackBoundary.pRollbackBoundary = pRollbackBoundary;
1736 1736
1737 hr = UserExperienceOnPlanRollbackBoundary(pUX, pRollbackBoundary->sczId, &pRollbackBoundary->fTransaction); 1737 hr = UserExperienceOnPlanRollbackBoundary(pUX, pRollbackBoundary->sczId, &pRollbackBoundary->fTransaction);
@@ -1786,6 +1786,18 @@ extern "C" HRESULT PlanRollbackBoundaryComplete(
1786 // Add checkpoints. 1786 // Add checkpoints.
1787 hr = PlanExecuteCheckpoint(pPlan); 1787 hr = PlanExecuteCheckpoint(pPlan);
1788 1788
1789 // Add complete rollback boundary to execute plan.
1790 hr = PlanAppendExecuteAction(pPlan, &pExecuteAction);
1791 ExitOnFailure(hr, "Failed to append rollback boundary complete action.");
1792
1793 pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END;
1794
1795 // Add begin rollback boundary to rollback plan.
1796 hr = PlanAppendRollbackAction(pPlan, &pExecuteAction);
1797 ExitOnFailure(hr, "Failed to append rollback boundary complete action.");
1798
1799 pExecuteAction->type = BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END;
1800
1789LExit: 1801LExit:
1790 return hr; 1802 return hr;
1791} 1803}
@@ -2616,8 +2628,12 @@ static void ExecuteActionLog(
2616 LogStringLine(PlanDumpLevel, "%ls action[%u]: MSU_PACKAGE package id: %ls, action: %hs, log path: %ls", wzBase, iAction, pAction->msuPackage.pPackage->sczId, LoggingActionStateToString(pAction->msuPackage.action), pAction->msuPackage.sczLogPath); 2628 LogStringLine(PlanDumpLevel, "%ls action[%u]: MSU_PACKAGE package id: %ls, action: %hs, log path: %ls", wzBase, iAction, pAction->msuPackage.pPackage->sczId, LoggingActionStateToString(pAction->msuPackage.action), pAction->msuPackage.sczLogPath);
2617 break; 2629 break;
2618 2630
2619 case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY: 2631 case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START:
2620 LogStringLine(PlanDumpLevel, "%ls action[%u]: ROLLBACK_BOUNDARY id: %ls, vital: %ls", wzBase, iAction, pAction->rollbackBoundary.pRollbackBoundary->sczId, pAction->rollbackBoundary.pRollbackBoundary->fVital ? L"yes" : L"no"); 2632 LogStringLine(PlanDumpLevel, "%ls action[%u]: ROLLBACK_BOUNDARY_START id: %ls, vital: %ls", wzBase, iAction, pAction->rollbackBoundary.pRollbackBoundary->sczId, pAction->rollbackBoundary.pRollbackBoundary->fVital ? L"yes" : L"no");
2633 break;
2634
2635 case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END:
2636 LogStringLine(PlanDumpLevel, "%ls action[%u]: ROLLBACK_BOUNDARY_END", wzBase, iAction);
2621 break; 2637 break;
2622 2638
2623 case BURN_EXECUTE_ACTION_TYPE_WAIT_CACHE_PACKAGE: 2639 case BURN_EXECUTE_ACTION_TYPE_WAIT_CACHE_PACKAGE: