diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-12-12 21:52:29 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-12-13 14:44:02 -0600 |
| commit | 72b024f33d9630432e8aad2bf8261051a0df1e41 (patch) | |
| tree | 3ff13dffd1a3f93b87f789716bf4c47268a845d9 /src/burn/engine/plan.cpp | |
| parent | e223ab393bdf04a9c3d0d2144b48a10d7b2650a2 (diff) | |
| download | wix-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.cpp | 24 |
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 | |||
| 1789 | LExit: | 1801 | LExit: |
| 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: |
