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 | |
| 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
| -rw-r--r-- | src/burn/engine/apply.cpp | 73 | ||||
| -rw-r--r-- | src/burn/engine/engine.mc | 14 | ||||
| -rw-r--r-- | src/burn/engine/plan.cpp | 24 | ||||
| -rw-r--r-- | src/burn/engine/plan.h | 3 | ||||
| -rw-r--r-- | src/burn/test/BurnUnitTest/PlanTest.cpp | 88 | ||||
| -rw-r--r-- | src/test/burn/WixToolsetTest.BurnE2E/RollbackBoundaryTests.cs | 2 |
6 files changed, 147 insertions, 57 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 283c0ada..0467132e 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
| @@ -191,7 +191,6 @@ static HRESULT DoExecuteAction( | |||
| 191 | __in BURN_ENGINE_STATE* pEngineState, | 191 | __in BURN_ENGINE_STATE* pEngineState, |
| 192 | __in BURN_EXECUTE_ACTION* pExecuteAction, | 192 | __in BURN_EXECUTE_ACTION* pExecuteAction, |
| 193 | __in BURN_EXECUTE_CONTEXT* pContext, | 193 | __in BURN_EXECUTE_CONTEXT* pContext, |
| 194 | __inout BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary, | ||
| 195 | __inout BURN_EXECUTE_ACTION_CHECKPOINT** ppCheckpoint, | 194 | __inout BURN_EXECUTE_ACTION_CHECKPOINT** ppCheckpoint, |
| 196 | __out BOOL* pfSuspend, | 195 | __out BOOL* pfSuspend, |
| 197 | __out BOOTSTRAPPER_APPLY_RESTART* pRestart | 196 | __out BOOTSTRAPPER_APPLY_RESTART* pRestart |
| @@ -657,8 +656,7 @@ extern "C" HRESULT ApplyExecute( | |||
| 657 | HRESULT hrRollback = S_OK; | 656 | HRESULT hrRollback = S_OK; |
| 658 | BURN_EXECUTE_ACTION_CHECKPOINT* pCheckpoint = NULL; | 657 | BURN_EXECUTE_ACTION_CHECKPOINT* pCheckpoint = NULL; |
| 659 | BURN_EXECUTE_CONTEXT context = { }; | 658 | BURN_EXECUTE_CONTEXT context = { }; |
| 660 | BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL; | 659 | BOOL fSeekRollbackBoundaryEnd = FALSE; |
| 661 | BOOL fSeekNextRollbackBoundary = FALSE; | ||
| 662 | 660 | ||
| 663 | context.pCache = pEngineState->plan.pCache; | 661 | context.pCache = pEngineState->plan.pCache; |
| 664 | context.pUX = &pEngineState->userExperience; | 662 | context.pUX = &pEngineState->userExperience; |
| @@ -680,21 +678,41 @@ extern "C" HRESULT ApplyExecute( | |||
| 680 | continue; | 678 | continue; |
| 681 | } | 679 | } |
| 682 | 680 | ||
| 683 | // If we are seeking the next rollback boundary, skip if this action wasn't it. | 681 | // If we are seeking the end of the rollback boundary, skip if this action wasn't it. |
| 684 | if (fSeekNextRollbackBoundary) | 682 | if (fSeekRollbackBoundaryEnd) |
| 685 | { | 683 | { |
| 686 | if (BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY == pExecuteAction->type) | 684 | if (BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END != pExecuteAction->type) |
| 687 | { | 685 | { |
| 686 | LPCWSTR wzId = NULL; | ||
| 687 | switch (pExecuteAction->type) | ||
| 688 | { | ||
| 689 | case BURN_EXECUTE_ACTION_TYPE_EXE_PACKAGE: | ||
| 690 | wzId = pExecuteAction->exePackage.pPackage->sczId; | ||
| 691 | break; | ||
| 692 | case BURN_EXECUTE_ACTION_TYPE_MSI_PACKAGE: | ||
| 693 | wzId = pExecuteAction->msiPackage.pPackage->sczId; | ||
| 694 | break; | ||
| 695 | case BURN_EXECUTE_ACTION_TYPE_MSP_TARGET: | ||
| 696 | wzId = pExecuteAction->mspTarget.pPackage->sczId; | ||
| 697 | break; | ||
| 698 | case BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE: | ||
| 699 | wzId = pExecuteAction->msuPackage.pPackage->sczId; | ||
| 700 | break; | ||
| 701 | } | ||
| 702 | |||
| 703 | if (wzId) | ||
| 704 | { | ||
| 705 | LogId(REPORT_WARNING, MSG_APPLY_SKIPPING_NONVITAL_ROLLBACK_BOUNDARY_PACKAGE, wzId); | ||
| 706 | } | ||
| 707 | |||
| 688 | continue; | 708 | continue; |
| 689 | } | 709 | } |
| 690 | else | 710 | |
| 691 | { | 711 | fSeekRollbackBoundaryEnd = FALSE; |
| 692 | fSeekNextRollbackBoundary = FALSE; | ||
| 693 | } | ||
| 694 | } | 712 | } |
| 695 | 713 | ||
| 696 | // Execute the action. | 714 | // Execute the action. |
| 697 | hr = DoExecuteAction(pEngineState, pExecuteAction, &context, &pRollbackBoundary, &pCheckpoint, pfSuspend, pRestart); | 715 | hr = DoExecuteAction(pEngineState, pExecuteAction, &context, &pCheckpoint, pfSuspend, pRestart); |
| 698 | 716 | ||
| 699 | if (*pfSuspend || BOOTSTRAPPER_APPLY_RESTART_INITIATED == *pRestart) | 717 | if (*pfSuspend || BOOTSTRAPPER_APPLY_RESTART_INITIATED == *pRestart) |
| 700 | { | 718 | { |
| @@ -737,19 +755,24 @@ extern "C" HRESULT ApplyExecute( | |||
| 737 | 755 | ||
| 738 | hrRollback = DoRollbackActions(pEngineState, &context, pCheckpoint->dwId, pRestart); | 756 | hrRollback = DoRollbackActions(pEngineState, &context, pCheckpoint->dwId, pRestart); |
| 739 | IgnoreRollbackError(hrRollback, "Failed rollback actions"); | 757 | IgnoreRollbackError(hrRollback, "Failed rollback actions"); |
| 740 | } | ||
| 741 | 758 | ||
| 742 | // If the rollback boundary is vital, end execution here. | 759 | if (pCheckpoint->pActiveRollbackBoundary) |
| 743 | if (pRollbackBoundary && pRollbackBoundary->fVital) | 760 | { |
| 744 | { | 761 | if (pCheckpoint->pActiveRollbackBoundary->fVital) |
| 745 | break; | 762 | { |
| 763 | // If the rollback boundary is vital, end execution here. | ||
| 764 | break; | ||
| 765 | } | ||
| 766 | |||
| 767 | // Move forward to the end of this rollback boundary. | ||
| 768 | fSeekRollbackBoundaryEnd = TRUE; | ||
| 769 | |||
| 770 | LogId(REPORT_WARNING, MSG_APPLY_SKIPPING_REST_OF_NONVITAL_ROLLBACK_BOUNDARY, pCheckpoint->pActiveRollbackBoundary->sczId); | ||
| 771 | } | ||
| 746 | } | 772 | } |
| 747 | 773 | ||
| 748 | // Ignore failure inside of a non-vital rollback boundary. | 774 | // Ignore failure outside of a vital rollback boundary. |
| 749 | hr = S_OK; | 775 | hr = S_OK; |
| 750 | |||
| 751 | // Move forward to next rollback boundary. | ||
| 752 | fSeekNextRollbackBoundary = TRUE; | ||
| 753 | } | 776 | } |
| 754 | } | 777 | } |
| 755 | 778 | ||
| @@ -2207,7 +2230,6 @@ static HRESULT DoExecuteAction( | |||
| 2207 | __in BURN_ENGINE_STATE* pEngineState, | 2230 | __in BURN_ENGINE_STATE* pEngineState, |
| 2208 | __in BURN_EXECUTE_ACTION* pExecuteAction, | 2231 | __in BURN_EXECUTE_ACTION* pExecuteAction, |
| 2209 | __in BURN_EXECUTE_CONTEXT* pContext, | 2232 | __in BURN_EXECUTE_CONTEXT* pContext, |
| 2210 | __inout BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary, | ||
| 2211 | __inout BURN_EXECUTE_ACTION_CHECKPOINT** ppCheckpoint, | 2233 | __inout BURN_EXECUTE_ACTION_CHECKPOINT** ppCheckpoint, |
| 2212 | __out BOOL* pfSuspend, | 2234 | __out BOOL* pfSuspend, |
| 2213 | __out BOOTSTRAPPER_APPLY_RESTART* pRestart | 2235 | __out BOOTSTRAPPER_APPLY_RESTART* pRestart |
| @@ -2226,7 +2248,7 @@ static HRESULT DoExecuteAction( | |||
| 2226 | 2248 | ||
| 2227 | do | 2249 | do |
| 2228 | { | 2250 | { |
| 2229 | fInsideMsiTransaction = *ppRollbackBoundary && (*ppRollbackBoundary)->fActiveTransaction; | 2251 | fInsideMsiTransaction = *ppCheckpoint && (*ppCheckpoint)->pActiveRollbackBoundary && (*ppCheckpoint)->pActiveRollbackBoundary->fActiveTransaction; |
| 2230 | 2252 | ||
| 2231 | switch (pExecuteAction->type) | 2253 | switch (pExecuteAction->type) |
| 2232 | { | 2254 | { |
| @@ -2296,8 +2318,9 @@ static HRESULT DoExecuteAction( | |||
| 2296 | 2318 | ||
| 2297 | break; | 2319 | break; |
| 2298 | 2320 | ||
| 2299 | case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY: | 2321 | case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START: __fallthrough; |
| 2300 | *ppRollbackBoundary = pExecuteAction->rollbackBoundary.pRollbackBoundary; | 2322 | case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END: |
| 2323 | *ppCheckpoint = NULL; | ||
| 2301 | break; | 2324 | break; |
| 2302 | 2325 | ||
| 2303 | case BURN_EXECUTE_ACTION_TYPE_BEGIN_MSI_TRANSACTION: | 2326 | case BURN_EXECUTE_ACTION_TYPE_BEGIN_MSI_TRANSACTION: |
| @@ -2406,7 +2429,7 @@ static HRESULT DoRollbackActions( | |||
| 2406 | IgnoreRollbackError(hr, "Failed to rollback dependency action."); | 2429 | IgnoreRollbackError(hr, "Failed to rollback dependency action."); |
| 2407 | break; | 2430 | break; |
| 2408 | 2431 | ||
| 2409 | case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY: | 2432 | case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START: |
| 2410 | ExitFunction1(hr = S_OK); | 2433 | ExitFunction1(hr = S_OK); |
| 2411 | 2434 | ||
| 2412 | case BURN_EXECUTE_ACTION_TYPE_UNCACHE_PACKAGE: | 2435 | case BURN_EXECUTE_ACTION_TYPE_UNCACHE_PACKAGE: |
diff --git a/src/burn/engine/engine.mc b/src/burn/engine/engine.mc index dcd18074..b9267593 100644 --- a/src/burn/engine/engine.mc +++ b/src/burn/engine/engine.mc | |||
| @@ -991,6 +991,20 @@ Language=English | |||
| 991 | Illegal state: Reboot requested within an MSI transaction, id: %1!ls! | 991 | Illegal state: Reboot requested within an MSI transaction, id: %1!ls! |
| 992 | . | 992 | . |
| 993 | 993 | ||
| 994 | MessageId=388 | ||
| 995 | Severity=Warning | ||
| 996 | SymbolicName=MSG_APPLY_SKIPPING_NONVITAL_ROLLBACK_BOUNDARY_PACKAGE | ||
| 997 | Language=English | ||
| 998 | Skipping package inside non-vital rollback boundary, id: %1!ls! | ||
| 999 | . | ||
| 1000 | |||
| 1001 | MessageId=389 | ||
| 1002 | Severity=Warning | ||
| 1003 | SymbolicName=MSG_APPLY_SKIPPING_REST_OF_NONVITAL_ROLLBACK_BOUNDARY | ||
| 1004 | Language=English | ||
| 1005 | Skipping the rest of non-vital rollback boundary, id: %1!ls! | ||
| 1006 | . | ||
| 1007 | |||
| 994 | MessageId=399 | 1008 | MessageId=399 |
| 995 | Severity=Success | 1009 | Severity=Success |
| 996 | SymbolicName=MSG_APPLY_COMPLETE | 1010 | SymbolicName=MSG_APPLY_COMPLETE |
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: |
diff --git a/src/burn/engine/plan.h b/src/burn/engine/plan.h index b4348cc4..f0560e6e 100644 --- a/src/burn/engine/plan.h +++ b/src/burn/engine/plan.h | |||
| @@ -56,7 +56,8 @@ enum BURN_EXECUTE_ACTION_TYPE | |||
| 56 | BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE, | 56 | BURN_EXECUTE_ACTION_TYPE_MSU_PACKAGE, |
| 57 | BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER, | 57 | BURN_EXECUTE_ACTION_TYPE_PACKAGE_PROVIDER, |
| 58 | BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY, | 58 | BURN_EXECUTE_ACTION_TYPE_PACKAGE_DEPENDENCY, |
| 59 | BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY, | 59 | BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START, |
| 60 | BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END, | ||
| 60 | BURN_EXECUTE_ACTION_TYPE_BEGIN_MSI_TRANSACTION, | 61 | BURN_EXECUTE_ACTION_TYPE_BEGIN_MSI_TRANSACTION, |
| 61 | BURN_EXECUTE_ACTION_TYPE_COMMIT_MSI_TRANSACTION, | 62 | BURN_EXECUTE_ACTION_TYPE_COMMIT_MSI_TRANSACTION, |
| 62 | }; | 63 | }; |
diff --git a/src/burn/test/BurnUnitTest/PlanTest.cpp b/src/burn/test/BurnUnitTest/PlanTest.cpp index 921f2a50..627da49a 100644 --- a/src/burn/test/BurnUnitTest/PlanTest.cpp +++ b/src/burn/test/BurnUnitTest/PlanTest.cpp | |||
| @@ -81,7 +81,7 @@ namespace Bootstrapper | |||
| 81 | fRollback = FALSE; | 81 | fRollback = FALSE; |
| 82 | dwIndex = 0; | 82 | dwIndex = 0; |
| 83 | DWORD dwExecuteCheckpointId = 2; | 83 | DWORD dwExecuteCheckpointId = 2; |
| 84 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 84 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 85 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 85 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 86 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 86 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 87 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 87 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -92,7 +92,8 @@ namespace Bootstrapper | |||
| 92 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 92 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 93 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 93 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 94 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 94 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 95 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | 95 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| 96 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | ||
| 96 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 97 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 97 | ValidateExecuteBeginMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 98 | ValidateExecuteBeginMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| 98 | dwExecuteCheckpointId += 1; // cache checkpoints | 99 | dwExecuteCheckpointId += 1; // cache checkpoints |
| @@ -115,13 +116,14 @@ namespace Bootstrapper | |||
| 115 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 116 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 116 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 117 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| 117 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 118 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 119 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 118 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, NULL); | 120 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, NULL); |
| 119 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 121 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 120 | 122 | ||
| 121 | fRollback = TRUE; | 123 | fRollback = TRUE; |
| 122 | dwIndex = 0; | 124 | dwIndex = 0; |
| 123 | dwExecuteCheckpointId = 2; | 125 | dwExecuteCheckpointId = 2; |
| 124 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 126 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 125 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 127 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 126 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 128 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 127 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 129 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| @@ -132,7 +134,8 @@ namespace Bootstrapper | |||
| 132 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 134 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 133 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 135 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 134 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 135 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | 137 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| 138 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | ||
| 136 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 139 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 137 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); | 140 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageB"); |
| 138 | dwExecuteCheckpointId += 1; // cache checkpoints | 141 | dwExecuteCheckpointId += 1; // cache checkpoints |
| @@ -151,6 +154,7 @@ namespace Bootstrapper | |||
| 151 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 154 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 152 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 155 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 153 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 156 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 157 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 154 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_INSTALL, NULL); | 158 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_INSTALL, NULL); |
| 155 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 159 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 156 | 160 | ||
| @@ -202,7 +206,7 @@ namespace Bootstrapper | |||
| 202 | fRollback = FALSE; | 206 | fRollback = FALSE; |
| 203 | dwIndex = 0; | 207 | dwIndex = 0; |
| 204 | DWORD dwExecuteCheckpointId = 1; | 208 | DWORD dwExecuteCheckpointId = 1; |
| 205 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | 209 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); |
| 206 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 210 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 207 | ValidateExecuteBeginMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 211 | ValidateExecuteBeginMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| 208 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 212 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -219,7 +223,8 @@ namespace Bootstrapper | |||
| 219 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 223 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 220 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); | 224 | ValidateExecuteCommitMsiTransaction(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ"); |
| 221 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 225 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 222 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 226 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| 227 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | ||
| 223 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 228 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 224 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 229 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 225 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 230 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -228,12 +233,13 @@ namespace Bootstrapper | |||
| 228 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 233 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 229 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 234 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 230 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 235 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 236 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 231 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 237 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 232 | 238 | ||
| 233 | fRollback = TRUE; | 239 | fRollback = TRUE; |
| 234 | dwIndex = 0; | 240 | dwIndex = 0; |
| 235 | dwExecuteCheckpointId = 1; | 241 | dwExecuteCheckpointId = 1; |
| 236 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); | 242 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"rbaOCA08D8ky7uBOK71_6FWz1K3TuQ", TRUE, TRUE); |
| 237 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 243 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 238 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 244 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageC", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 239 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 245 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -246,7 +252,8 @@ namespace Bootstrapper | |||
| 246 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 252 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 247 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 253 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 248 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 254 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 249 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 255 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); |
| 256 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | ||
| 250 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); | 257 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{E6469F05-BDC8-4EB8-B218-67412543EFAA}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 251 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 258 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 252 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 259 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); |
| @@ -255,6 +262,7 @@ namespace Bootstrapper | |||
| 255 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 262 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 256 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 263 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 257 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 264 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 265 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 258 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 266 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 259 | 267 | ||
| 260 | Assert::Equal(3ul, pPlan->cExecutePackagesTotal); | 268 | Assert::Equal(3ul, pPlan->cExecutePackagesTotal); |
| @@ -319,7 +327,7 @@ namespace Bootstrapper | |||
| 319 | fRollback = FALSE; | 327 | fRollback = FALSE; |
| 320 | dwIndex = 0; | 328 | dwIndex = 0; |
| 321 | DWORD dwExecuteCheckpointId = 2; | 329 | DWORD dwExecuteCheckpointId = 2; |
| 322 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 330 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 323 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 331 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 324 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 332 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 325 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 333 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -330,12 +338,13 @@ namespace Bootstrapper | |||
| 330 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 338 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 331 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 339 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 332 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 340 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 341 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 333 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 342 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 334 | 343 | ||
| 335 | fRollback = TRUE; | 344 | fRollback = TRUE; |
| 336 | dwIndex = 0; | 345 | dwIndex = 0; |
| 337 | dwExecuteCheckpointId = 2; | 346 | dwExecuteCheckpointId = 2; |
| 338 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 347 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 339 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 348 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 340 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 349 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 341 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 350 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| @@ -346,6 +355,7 @@ namespace Bootstrapper | |||
| 346 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 355 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 347 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 356 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 348 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 357 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 358 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 349 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 359 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 350 | 360 | ||
| 351 | Assert::Equal(1ul, pPlan->cExecutePackagesTotal); | 361 | Assert::Equal(1ul, pPlan->cExecutePackagesTotal); |
| @@ -401,22 +411,24 @@ namespace Bootstrapper | |||
| 401 | fRollback = FALSE; | 411 | fRollback = FALSE; |
| 402 | dwIndex = 0; | 412 | dwIndex = 0; |
| 403 | DWORD dwExecuteCheckpointId = 2; | 413 | DWORD dwExecuteCheckpointId = 2; |
| 404 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 414 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 405 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 415 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 406 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 416 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 407 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 417 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 408 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 418 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 419 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 409 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 420 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 410 | 421 | ||
| 411 | fRollback = TRUE; | 422 | fRollback = TRUE; |
| 412 | dwIndex = 0; | 423 | dwIndex = 0; |
| 413 | dwExecuteCheckpointId = 2; | 424 | dwExecuteCheckpointId = 2; |
| 414 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 425 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 415 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 426 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 416 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 427 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 417 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 428 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 418 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 429 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 419 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 430 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 431 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 420 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 432 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 421 | 433 | ||
| 422 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); | 434 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); |
| @@ -472,7 +484,7 @@ namespace Bootstrapper | |||
| 472 | fRollback = FALSE; | 484 | fRollback = FALSE; |
| 473 | dwIndex = 0; | 485 | dwIndex = 0; |
| 474 | DWORD dwExecuteCheckpointId = 2; | 486 | DWORD dwExecuteCheckpointId = 2; |
| 475 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 487 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 476 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 488 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 477 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 489 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 478 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 490 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -483,13 +495,14 @@ namespace Bootstrapper | |||
| 483 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 495 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 484 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 496 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 485 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 497 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 498 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 486 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, NULL); | 499 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, NULL); |
| 487 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 500 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 488 | 501 | ||
| 489 | fRollback = TRUE; | 502 | fRollback = TRUE; |
| 490 | dwIndex = 0; | 503 | dwIndex = 0; |
| 491 | dwExecuteCheckpointId = 2; | 504 | dwExecuteCheckpointId = 2; |
| 492 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 505 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 493 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); | 506 | ValidateExecuteUncachePackage(pPlan, fRollback, dwIndex++, L"PackageA"); |
| 494 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 507 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 495 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); | 508 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| @@ -500,6 +513,7 @@ namespace Bootstrapper | |||
| 500 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 513 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 501 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 514 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 502 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 515 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 516 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 503 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_INSTALL, NULL); | 517 | ValidateExecuteExePackage(pPlan, fRollback, dwIndex++, L"{FD9920AD-DBCA-4C6C-8CD5-B47431CE8D21}", BOOTSTRAPPER_ACTION_STATE_INSTALL, NULL); |
| 504 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 518 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 505 | 519 | ||
| @@ -551,15 +565,17 @@ namespace Bootstrapper | |||
| 551 | fRollback = FALSE; | 565 | fRollback = FALSE; |
| 552 | dwIndex = 0; | 566 | dwIndex = 0; |
| 553 | DWORD dwExecuteCheckpointId = 1; | 567 | DWORD dwExecuteCheckpointId = 1; |
| 554 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 568 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 555 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 569 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 570 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 556 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 571 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 557 | 572 | ||
| 558 | fRollback = TRUE; | 573 | fRollback = TRUE; |
| 559 | dwIndex = 0; | 574 | dwIndex = 0; |
| 560 | dwExecuteCheckpointId = 1; | 575 | dwExecuteCheckpointId = 1; |
| 561 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 576 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 562 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 577 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 578 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 563 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 579 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 564 | 580 | ||
| 565 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); | 581 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); |
| @@ -609,7 +625,7 @@ namespace Bootstrapper | |||
| 609 | fRollback = FALSE; | 625 | fRollback = FALSE; |
| 610 | dwIndex = 0; | 626 | dwIndex = 0; |
| 611 | DWORD dwExecuteCheckpointId = 1; | 627 | DWORD dwExecuteCheckpointId = 1; |
| 612 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 628 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 613 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 629 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 614 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 630 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 615 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 631 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -618,12 +634,13 @@ namespace Bootstrapper | |||
| 618 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 634 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 619 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 635 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 620 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 636 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 637 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 621 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 638 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 622 | 639 | ||
| 623 | fRollback = TRUE; | 640 | fRollback = TRUE; |
| 624 | dwIndex = 0; | 641 | dwIndex = 0; |
| 625 | dwExecuteCheckpointId = 1; | 642 | dwExecuteCheckpointId = 1; |
| 626 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 643 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 627 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 644 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 628 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 645 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 629 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); | 646 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PackageA", BURN_DEPENDENCY_ACTION_REGISTER); |
| @@ -632,6 +649,7 @@ namespace Bootstrapper | |||
| 632 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 649 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 633 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 650 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 634 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 651 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 652 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 635 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 653 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 636 | 654 | ||
| 637 | Assert::Equal(1ul, pPlan->cExecutePackagesTotal); | 655 | Assert::Equal(1ul, pPlan->cExecutePackagesTotal); |
| @@ -682,21 +700,23 @@ namespace Bootstrapper | |||
| 682 | fRollback = FALSE; | 700 | fRollback = FALSE; |
| 683 | dwIndex = 0; | 701 | dwIndex = 0; |
| 684 | DWORD dwExecuteCheckpointId = 1; | 702 | DWORD dwExecuteCheckpointId = 1; |
| 685 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 703 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 686 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 704 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 687 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 705 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 688 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 706 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 689 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 707 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 708 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 690 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 709 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 691 | 710 | ||
| 692 | fRollback = TRUE; | 711 | fRollback = TRUE; |
| 693 | dwIndex = 0; | 712 | dwIndex = 0; |
| 694 | dwExecuteCheckpointId = 1; | 713 | dwExecuteCheckpointId = 1; |
| 695 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 714 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 696 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); | 715 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PackageA", L"{A6F0CBF7-1578-450C-B9D7-9CF2EEC40002}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 697 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 716 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 698 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 717 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 699 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 718 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 719 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 700 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 720 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 701 | 721 | ||
| 702 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); | 722 | Assert::Equal(0ul, pPlan->cExecutePackagesTotal); |
| @@ -756,7 +776,7 @@ namespace Bootstrapper | |||
| 756 | dwIndex = 0; | 776 | dwIndex = 0; |
| 757 | DWORD dwExecuteCheckpointId = 2; | 777 | DWORD dwExecuteCheckpointId = 2; |
| 758 | BURN_EXECUTE_ACTION* pExecuteAction = NULL; | 778 | BURN_EXECUTE_ACTION* pExecuteAction = NULL; |
| 759 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 779 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 760 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 780 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 761 | dwExecuteCheckpointId += 1; // cache checkpoints | 781 | dwExecuteCheckpointId += 1; // cache checkpoints |
| 762 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"NetFx48Web"); | 782 | ValidateExecuteWaitCachePackage(pPlan, fRollback, dwIndex++, L"NetFx48Web"); |
| @@ -780,12 +800,13 @@ namespace Bootstrapper | |||
| 780 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); | 800 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 781 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 801 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 782 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 802 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 803 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 783 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 804 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 784 | 805 | ||
| 785 | fRollback = TRUE; | 806 | fRollback = TRUE; |
| 786 | dwIndex = 0; | 807 | dwIndex = 0; |
| 787 | dwExecuteCheckpointId = 2; | 808 | dwExecuteCheckpointId = 2; |
| 788 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 809 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 789 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 810 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 790 | dwExecuteCheckpointId += 1; // cache checkpoints | 811 | dwExecuteCheckpointId += 1; // cache checkpoints |
| 791 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 812 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -806,6 +827,7 @@ namespace Bootstrapper | |||
| 806 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 827 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 807 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 828 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 808 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 829 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 830 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 809 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 831 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 810 | 832 | ||
| 811 | Assert::Equal(2ul, pPlan->cExecutePackagesTotal); | 833 | Assert::Equal(2ul, pPlan->cExecutePackagesTotal); |
| @@ -857,7 +879,7 @@ namespace Bootstrapper | |||
| 857 | dwIndex = 0; | 879 | dwIndex = 0; |
| 858 | DWORD dwExecuteCheckpointId = 1; | 880 | DWORD dwExecuteCheckpointId = 1; |
| 859 | BURN_EXECUTE_ACTION* pExecuteAction = NULL; | 881 | BURN_EXECUTE_ACTION* pExecuteAction = NULL; |
| 860 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 882 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 861 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 883 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 862 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); | 884 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_UNREGISTER); |
| 863 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 885 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| @@ -873,12 +895,13 @@ namespace Bootstrapper | |||
| 873 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); | 895 | ValidateExecuteMsiPackage(pPlan, fRollback, dwIndex++, L"PackageA", BOOTSTRAPPER_ACTION_STATE_UNINSTALL, BURN_MSI_PROPERTY_UNINSTALL, INSTALLUILEVEL_NONE, FALSE, BOOTSTRAPPER_MSI_FILE_VERSIONING_MISSING_OR_OLDER, 0); |
| 874 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 896 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 875 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 897 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 898 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 876 | Assert::Equal(dwIndex, pPlan->cExecuteActions); | 899 | Assert::Equal(dwIndex, pPlan->cExecuteActions); |
| 877 | 900 | ||
| 878 | fRollback = TRUE; | 901 | fRollback = TRUE; |
| 879 | dwIndex = 0; | 902 | dwIndex = 0; |
| 880 | dwExecuteCheckpointId = 1; | 903 | dwExecuteCheckpointId = 1; |
| 881 | ValidateExecuteRollbackBoundary(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); | 904 | ValidateExecuteRollbackBoundaryStart(pPlan, fRollback, dwIndex++, L"WixDefaultBoundary", TRUE, FALSE); |
| 882 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); | 905 | ValidateExecutePackageDependency(pPlan, fRollback, dwIndex++, L"PatchA", L"{22D1DDBA-284D-40A7-BD14-95EA07906F21}", BURN_DEPENDENCY_ACTION_REGISTER); |
| 883 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 906 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 884 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", BURN_DEPENDENCY_ACTION_REGISTER); | 907 | ValidateExecutePackageProvider(pPlan, fRollback, dwIndex++, L"PatchA", BURN_DEPENDENCY_ACTION_REGISTER); |
| @@ -894,6 +917,7 @@ namespace Bootstrapper | |||
| 894 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 917 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 895 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 918 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 896 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); | 919 | ValidateExecuteCheckpoint(pPlan, fRollback, dwIndex++, dwExecuteCheckpointId++); |
| 920 | ValidateExecuteRollbackBoundaryEnd(pPlan, fRollback, dwIndex++); | ||
| 897 | Assert::Equal(dwIndex, pPlan->cRollbackActions); | 921 | Assert::Equal(dwIndex, pPlan->cRollbackActions); |
| 898 | 922 | ||
| 899 | Assert::Equal(2ul, pPlan->cExecutePackagesTotal); | 923 | Assert::Equal(2ul, pPlan->cExecutePackagesTotal); |
| @@ -1402,7 +1426,7 @@ namespace Bootstrapper | |||
| 1402 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); | 1426 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); |
| 1403 | } | 1427 | } |
| 1404 | 1428 | ||
| 1405 | void ValidateExecuteRollbackBoundary( | 1429 | void ValidateExecuteRollbackBoundaryStart( |
| 1406 | __in BURN_PLAN* pPlan, | 1430 | __in BURN_PLAN* pPlan, |
| 1407 | __in BOOL fRollback, | 1431 | __in BOOL fRollback, |
| 1408 | __in DWORD dwIndex, | 1432 | __in DWORD dwIndex, |
| @@ -1412,13 +1436,25 @@ namespace Bootstrapper | |||
| 1412 | ) | 1436 | ) |
| 1413 | { | 1437 | { |
| 1414 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); | 1438 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); |
| 1415 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY, pAction->type); | 1439 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_START, pAction->type); |
| 1416 | NativeAssert::StringEqual(wzId, pAction->rollbackBoundary.pRollbackBoundary->sczId); | 1440 | NativeAssert::StringEqual(wzId, pAction->rollbackBoundary.pRollbackBoundary->sczId); |
| 1417 | Assert::Equal<BOOL>(fVital, pAction->rollbackBoundary.pRollbackBoundary->fVital); | 1441 | Assert::Equal<BOOL>(fVital, pAction->rollbackBoundary.pRollbackBoundary->fVital); |
| 1418 | Assert::Equal<BOOL>(fTransaction, pAction->rollbackBoundary.pRollbackBoundary->fTransaction); | 1442 | Assert::Equal<BOOL>(fTransaction, pAction->rollbackBoundary.pRollbackBoundary->fTransaction); |
| 1419 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); | 1443 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); |
| 1420 | } | 1444 | } |
| 1421 | 1445 | ||
| 1446 | void ValidateExecuteRollbackBoundaryEnd( | ||
| 1447 | __in BURN_PLAN* pPlan, | ||
| 1448 | __in BOOL fRollback, | ||
| 1449 | __in DWORD dwIndex | ||
| 1450 | ) | ||
| 1451 | { | ||
| 1452 | BURN_EXECUTE_ACTION* pAction = ValidateExecuteActionExists(pPlan, fRollback, dwIndex); | ||
| 1453 | Assert::Equal<DWORD>(BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY_END, pAction->type); | ||
| 1454 | Assert::Equal<size_t>(NULL, (size_t)(pAction->rollbackBoundary.pRollbackBoundary)); | ||
| 1455 | Assert::Equal<BOOL>(FALSE, pAction->fDeleted); | ||
| 1456 | } | ||
| 1457 | |||
| 1422 | void ValidateExecuteUncachePackage( | 1458 | void ValidateExecuteUncachePackage( |
| 1423 | __in BURN_PLAN* pPlan, | 1459 | __in BURN_PLAN* pPlan, |
| 1424 | __in BOOL fRollback, | 1460 | __in BOOL fRollback, |
diff --git a/src/test/burn/WixToolsetTest.BurnE2E/RollbackBoundaryTests.cs b/src/test/burn/WixToolsetTest.BurnE2E/RollbackBoundaryTests.cs index 6539db34..effe4418 100644 --- a/src/test/burn/WixToolsetTest.BurnE2E/RollbackBoundaryTests.cs +++ b/src/test/burn/WixToolsetTest.BurnE2E/RollbackBoundaryTests.cs | |||
| @@ -22,7 +22,7 @@ namespace WixToolsetTest.BurnE2E | |||
| 22 | /// install package B | 22 | /// install package B |
| 23 | /// unregister since no non-permanent packages should be installed or cached. | 23 | /// unregister since no non-permanent packages should be installed or cached. |
| 24 | /// </summary> | 24 | /// </summary> |
| 25 | [Fact(Skip = "https://github.com/wixtoolset/issues/issues/6309")] | 25 | [Fact] |
| 26 | public void NonVitalRollbackBoundarySkipsToNextRollbackBoundary() | 26 | public void NonVitalRollbackBoundarySkipsToNextRollbackBoundary() |
| 27 | { | 27 | { |
| 28 | var packageA = this.CreatePackageInstaller("PackageA"); | 28 | var packageA = this.CreatePackageInstaller("PackageA"); |
