aboutsummaryrefslogtreecommitdiff
path: root/src/engine/plan.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/engine/plan.cpp192
1 files changed, 60 insertions, 132 deletions
diff --git a/src/engine/plan.cpp b/src/engine/plan.cpp
index 6f5407b9..1aaec252 100644
--- a/src/engine/plan.cpp
+++ b/src/engine/plan.cpp
@@ -6,13 +6,6 @@
6 6
7// internal struct definitions 7// internal struct definitions
8 8
9struct PLAN_NONPERMANENT_PACKAGE_INDICES
10{
11 DWORD iAfterExecuteFirstNonPermanentPackage;
12 DWORD iBeforeRollbackFirstNonPermanentPackage;
13 DWORD iAfterExecuteLastNonPermanentPackage;
14 DWORD iAfterRollbackLastNonPermanentPackage;
15};
16 9
17// internal function definitions 10// internal function definitions
18 11
@@ -39,8 +32,7 @@ static HRESULT ProcessPackage(
39 __in BOOTSTRAPPER_RELATION_TYPE relationType, 32 __in BOOTSTRAPPER_RELATION_TYPE relationType,
40 __in_z_opt LPCWSTR wzLayoutDirectory, 33 __in_z_opt LPCWSTR wzLayoutDirectory,
41 __inout HANDLE* phSyncpointEvent, 34 __inout HANDLE* phSyncpointEvent,
42 __inout BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary, 35 __inout BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary
43 __in_opt PLAN_NONPERMANENT_PACKAGE_INDICES* pNonpermanentPackageIndices
44 ); 36 );
45static HRESULT ProcessPackageRollbackBoundary( 37static HRESULT ProcessPackageRollbackBoundary(
46 __in BURN_PLAN* pPlan, 38 __in BURN_PLAN* pPlan,
@@ -479,7 +471,7 @@ extern "C" HRESULT PlanPackages(
479 __in BURN_PLAN* pPlan, 471 __in BURN_PLAN* pPlan,
480 __in BURN_LOGGING* pLog, 472 __in BURN_LOGGING* pLog,
481 __in BURN_VARIABLES* pVariables, 473 __in BURN_VARIABLES* pVariables,
482 __in BOOL fBundleInstalled, 474 __in BOOL /*fBundleInstalled*/,
483 __in BOOTSTRAPPER_DISPLAY display, 475 __in BOOTSTRAPPER_DISPLAY display,
484 __in BOOTSTRAPPER_RELATION_TYPE relationType, 476 __in BOOTSTRAPPER_RELATION_TYPE relationType,
485 __in_z_opt LPCWSTR wzLayoutDirectory, 477 __in_z_opt LPCWSTR wzLayoutDirectory,
@@ -490,12 +482,6 @@ extern "C" HRESULT PlanPackages(
490 BOOL fBundlePerMachine = pPlan->fPerMachine; // bundle is per-machine if plan starts per-machine. 482 BOOL fBundlePerMachine = pPlan->fPerMachine; // bundle is per-machine if plan starts per-machine.
491 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL; 483 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL;
492 484
493 PLAN_NONPERMANENT_PACKAGE_INDICES nonpermanentPackageIndices;
494 nonpermanentPackageIndices.iAfterExecuteFirstNonPermanentPackage = BURN_PLAN_INVALID_ACTION_INDEX;
495 nonpermanentPackageIndices.iBeforeRollbackFirstNonPermanentPackage = BURN_PLAN_INVALID_ACTION_INDEX;
496 nonpermanentPackageIndices.iAfterExecuteLastNonPermanentPackage = BURN_PLAN_INVALID_ACTION_INDEX;
497 nonpermanentPackageIndices.iAfterRollbackLastNonPermanentPackage = BURN_PLAN_INVALID_ACTION_INDEX;
498
499 // Plan the packages. 485 // Plan the packages.
500 for (DWORD i = 0; i < pPackages->cPackages; ++i) 486 for (DWORD i = 0; i < pPackages->cPackages; ++i)
501 { 487 {
@@ -518,34 +504,10 @@ extern "C" HRESULT PlanPackages(
518 } 504 }
519 } 505 }
520 506
521 hr = ProcessPackage(fBundlePerMachine, pUX, pPlan, pPackage, pLog, pVariables, display, relationType, wzLayoutDirectory, phSyncpointEvent, &pRollbackBoundary, &nonpermanentPackageIndices); 507 hr = ProcessPackage(fBundlePerMachine, pUX, pPlan, pPackage, pLog, pVariables, display, relationType, wzLayoutDirectory, phSyncpointEvent, &pRollbackBoundary);
522 ExitOnFailure(hr, "Failed to process package."); 508 ExitOnFailure(hr, "Failed to process package.");
523 } 509 }
524 510
525 // Insert the "keep registration" and "remove registration" actions in the plan when installing the first time and anytime we are uninstalling respectively.
526 if (!fBundleInstalled && (BOOTSTRAPPER_ACTION_INSTALL == pPlan->action || BOOTSTRAPPER_ACTION_MODIFY == pPlan->action || BOOTSTRAPPER_ACTION_REPAIR == pPlan->action))
527 {
528 if (BURN_PLAN_INVALID_ACTION_INDEX == nonpermanentPackageIndices.iAfterExecuteFirstNonPermanentPackage)
529 {
530 nonpermanentPackageIndices.iAfterExecuteFirstNonPermanentPackage = pPlan->cExecuteActions;
531 nonpermanentPackageIndices.iBeforeRollbackFirstNonPermanentPackage = pPlan->cRollbackActions;
532 }
533
534 hr = PlanKeepRegistration(pPlan, nonpermanentPackageIndices.iAfterExecuteFirstNonPermanentPackage, nonpermanentPackageIndices.iBeforeRollbackFirstNonPermanentPackage);
535 ExitOnFailure(hr, "Failed to plan install keep registration.");
536 }
537 else if (BOOTSTRAPPER_ACTION_UNINSTALL == pPlan->action)
538 {
539 if (BURN_PLAN_INVALID_ACTION_INDEX == nonpermanentPackageIndices.iAfterExecuteLastNonPermanentPackage)
540 {
541 nonpermanentPackageIndices.iAfterExecuteLastNonPermanentPackage = pPlan->cExecuteActions;
542 nonpermanentPackageIndices.iAfterRollbackLastNonPermanentPackage = pPlan->cRollbackActions;
543 }
544
545 hr = PlanRemoveRegistration(pPlan, nonpermanentPackageIndices.iAfterExecuteLastNonPermanentPackage, nonpermanentPackageIndices.iAfterRollbackLastNonPermanentPackage);
546 ExitOnFailure(hr, "Failed to plan uninstall remove registration.");
547 }
548
549 // If we still have an open rollback boundary, complete it. 511 // If we still have an open rollback boundary, complete it.
550 if (pRollbackBoundary) 512 if (pRollbackBoundary)
551 { 513 {
@@ -572,9 +534,9 @@ LExit:
572extern "C" HRESULT PlanRegistration( 534extern "C" HRESULT PlanRegistration(
573 __in BURN_PLAN* pPlan, 535 __in BURN_PLAN* pPlan,
574 __in BURN_REGISTRATION* pRegistration, 536 __in BURN_REGISTRATION* pRegistration,
575 __in BOOTSTRAPPER_RESUME_TYPE resumeType, 537 __in BOOTSTRAPPER_RESUME_TYPE /*resumeType*/,
576 __in BOOTSTRAPPER_RELATION_TYPE relationType, 538 __in BOOTSTRAPPER_RELATION_TYPE relationType,
577 __out BOOL* pfContinuePlanning 539 __inout BOOL* pfContinuePlanning
578 ) 540 )
579{ 541{
580 HRESULT hr = S_OK; 542 HRESULT hr = S_OK;
@@ -583,9 +545,6 @@ extern "C" HRESULT PlanRegistration(
583 545
584 pPlan->fRegister = TRUE; // register the bundle since we're modifying machine state. 546 pPlan->fRegister = TRUE; // register the bundle since we're modifying machine state.
585 547
586 // Keep the registration if the bundle was already installed or we are planning after a restart.
587 pPlan->fKeepRegistrationDefault = (pRegistration->fInstalled || BOOTSTRAPPER_RESUME_TYPE_REBOOT == resumeType);
588
589 pPlan->fDisallowRemoval = FALSE; // by default the bundle can be planned to be removed 548 pPlan->fDisallowRemoval = FALSE; // by default the bundle can be planned to be removed
590 549
591 if (BOOTSTRAPPER_ACTION_UNINSTALL == pPlan->action) 550 if (BOOTSTRAPPER_ACTION_UNINSTALL == pPlan->action)
@@ -692,7 +651,7 @@ extern "C" HRESULT PlanRegistration(
692 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE; 651 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE;
693 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION; 652 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION;
694 } 653 }
695 else if (BOOTSTRAPPER_ACTION_REPAIR == pPlan->action && !CacheBundleRunningFromCache()) // repairing but not not running from the cache. 654 else if (BOOTSTRAPPER_ACTION_REPAIR == pPlan->action && !CacheBundleRunningFromCache()) // repairing but not running from the cache.
696 { 655 {
697 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE; 656 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_CACHE_BUNDLE;
698 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION; 657 pPlan->dwRegistrationOperations |= BURN_REGISTRATION_ACTION_OPERATIONS_WRITE_REGISTRATION;
@@ -786,7 +745,7 @@ extern "C" HRESULT PlanPassThroughBundle(
786 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL; 745 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL;
787 746
788 // Plan passthrough package. 747 // Plan passthrough package.
789 hr = ProcessPackage(fBundlePerMachine, pUX, pPlan, pPackage, pLog, pVariables, display, relationType, NULL, phSyncpointEvent, &pRollbackBoundary, NULL); 748 hr = ProcessPackage(fBundlePerMachine, pUX, pPlan, pPackage, pLog, pVariables, display, relationType, NULL, phSyncpointEvent, &pRollbackBoundary);
790 ExitOnFailure(hr, "Failed to process passthrough package."); 749 ExitOnFailure(hr, "Failed to process passthrough package.");
791 750
792 // If we still have an open rollback boundary, complete it. 751 // If we still have an open rollback boundary, complete it.
@@ -820,7 +779,7 @@ extern "C" HRESULT PlanUpdateBundle(
820 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL; 779 BURN_ROLLBACK_BOUNDARY* pRollbackBoundary = NULL;
821 780
822 // Plan update package. 781 // Plan update package.
823 hr = ProcessPackage(fBundlePerMachine, pUX, pPlan, pPackage, pLog, pVariables, display, relationType, NULL, phSyncpointEvent, &pRollbackBoundary, NULL); 782 hr = ProcessPackage(fBundlePerMachine, pUX, pPlan, pPackage, pLog, pVariables, display, relationType, NULL, phSyncpointEvent, &pRollbackBoundary);
824 ExitOnFailure(hr, "Failed to process update package."); 783 ExitOnFailure(hr, "Failed to process update package.");
825 784
826 // If we still have an open rollback boundary, complete it. 785 // If we still have an open rollback boundary, complete it.
@@ -849,8 +808,7 @@ static HRESULT ProcessPackage(
849 __in BOOTSTRAPPER_RELATION_TYPE relationType, 808 __in BOOTSTRAPPER_RELATION_TYPE relationType,
850 __in_z_opt LPCWSTR wzLayoutDirectory, 809 __in_z_opt LPCWSTR wzLayoutDirectory,
851 __inout HANDLE* phSyncpointEvent, 810 __inout HANDLE* phSyncpointEvent,
852 __inout BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary, 811 __inout BURN_ROLLBACK_BOUNDARY** ppRollbackBoundary
853 __in_opt PLAN_NONPERMANENT_PACKAGE_INDICES* pNonpermanentPackageIndices
854 ) 812 )
855{ 813{
856 HRESULT hr = S_OK; 814 HRESULT hr = S_OK;
@@ -871,6 +829,12 @@ static HRESULT ProcessPackage(
871 hr = ProcessPackageRollbackBoundary(pPlan, pEffectiveRollbackBoundary, ppRollbackBoundary); 829 hr = ProcessPackageRollbackBoundary(pPlan, pEffectiveRollbackBoundary, ppRollbackBoundary);
872 ExitOnFailure(hr, "Failed to process package rollback boundary."); 830 ExitOnFailure(hr, "Failed to process package rollback boundary.");
873 831
832 if (pPackage->fCanAffectRegistration)
833 {
834 pPackage->expectedCacheRegistrationState = pPackage->cacheRegistrationState;
835 pPackage->expectedInstallRegistrationState = pPackage->installRegistrationState;
836 }
837
874 // If the package is in a requested state, plan it. 838 // If the package is in a requested state, plan it.
875 if (BOOTSTRAPPER_REQUEST_STATE_NONE != pPackage->requested) 839 if (BOOTSTRAPPER_REQUEST_STATE_NONE != pPackage->requested)
876 { 840 {
@@ -881,26 +845,19 @@ static HRESULT ProcessPackage(
881 } 845 }
882 else 846 else
883 { 847 {
884 if (pPackage->fUninstallable && pNonpermanentPackageIndices)
885 {
886 if (BURN_PLAN_INVALID_ACTION_INDEX == pNonpermanentPackageIndices->iBeforeRollbackFirstNonPermanentPackage)
887 {
888 pNonpermanentPackageIndices->iBeforeRollbackFirstNonPermanentPackage = pPlan->cRollbackActions;
889 }
890 }
891
892 hr = PlanExecutePackage(fBundlePerMachine, display, pUX, pPlan, pPackage, pLog, pVariables, phSyncpointEvent); 848 hr = PlanExecutePackage(fBundlePerMachine, display, pUX, pPlan, pPackage, pLog, pVariables, phSyncpointEvent);
893 ExitOnFailure(hr, "Failed to plan execute package."); 849 ExitOnFailure(hr, "Failed to plan execute package.");
894 850
895 if (pPackage->fUninstallable && pNonpermanentPackageIndices) 851 if (pPackage->fCanAffectRegistration)
896 { 852 {
897 if (BURN_PLAN_INVALID_ACTION_INDEX == pNonpermanentPackageIndices->iAfterExecuteFirstNonPermanentPackage) 853 if (BOOTSTRAPPER_ACTION_STATE_UNINSTALL < pPackage->execute)
898 { 854 {
899 pNonpermanentPackageIndices->iAfterExecuteFirstNonPermanentPackage = pPlan->cExecuteActions - 1; 855 pPackage->expectedInstallRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
856 }
857 else if (BOOTSTRAPPER_ACTION_STATE_UNINSTALL == pPackage->execute)
858 {
859 pPackage->expectedInstallRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_ABSENT;
900 } 860 }
901
902 pNonpermanentPackageIndices->iAfterExecuteLastNonPermanentPackage = pPlan->cExecuteActions;
903 pNonpermanentPackageIndices->iAfterRollbackLastNonPermanentPackage = pPlan->cRollbackActions;
904 } 861 }
905 } 862 }
906 } 863 }
@@ -920,6 +877,32 @@ static HRESULT ProcessPackage(
920 } 877 }
921 } 878 }
922 879
880 if (pPackage->fCanAffectRegistration)
881 {
882 if (BURN_DEPENDENCY_ACTION_REGISTER == pPackage->dependencyExecute)
883 {
884 if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pPackage->expectedCacheRegistrationState)
885 {
886 pPackage->expectedCacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
887 }
888 if (BURN_PACKAGE_REGISTRATION_STATE_IGNORED == pPackage->expectedInstallRegistrationState)
889 {
890 pPackage->expectedInstallRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
891 }
892 }
893 else if (BURN_DEPENDENCY_ACTION_UNREGISTER == pPackage->dependencyExecute)
894 {
895 if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->expectedCacheRegistrationState)
896 {
897 pPackage->expectedCacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED;
898 }
899 if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->expectedInstallRegistrationState)
900 {
901 pPackage->expectedInstallRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_IGNORED;
902 }
903 }
904 }
905
923 // Add the checkpoint after each package and dependency registration action. 906 // Add the checkpoint after each package and dependency registration action.
924 if (BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->execute || BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->rollback || BURN_DEPENDENCY_ACTION_NONE != pPackage->dependencyExecute) 907 if (BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->execute || BOOTSTRAPPER_ACTION_STATE_NONE != pPackage->rollback || BURN_DEPENDENCY_ACTION_NONE != pPackage->dependencyExecute)
925 { 908 {
@@ -1572,6 +1555,11 @@ extern "C" HRESULT PlanCleanPackage(
1572 pCleanAction->pPackage = pPackage; 1555 pCleanAction->pPackage = pPackage;
1573 1556
1574 pPackage->fUncache = TRUE; 1557 pPackage->fUncache = TRUE;
1558
1559 if (pPackage->fCanAffectRegistration)
1560 {
1561 pPackage->expectedCacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_ABSENT;
1562 }
1575 } 1563 }
1576 1564
1577LExit: 1565LExit:
@@ -1708,68 +1696,6 @@ LExit:
1708 return hr; 1696 return hr;
1709} 1697}
1710 1698
1711extern "C" HRESULT PlanKeepRegistration(
1712 __in BURN_PLAN* pPlan,
1713 __in DWORD iAfterExecutePackageAction,
1714 __in DWORD iBeforeRollbackPackageAction
1715 )
1716{
1717 HRESULT hr = S_OK;
1718 BURN_EXECUTE_ACTION* pAction = NULL;
1719
1720 if (BURN_PLAN_INVALID_ACTION_INDEX != iAfterExecutePackageAction)
1721 {
1722 hr = PlanInsertExecuteAction(iAfterExecutePackageAction, pPlan, &pAction);
1723 ExitOnFailure(hr, "Failed to insert keep registration execute action.");
1724
1725 pAction->type = BURN_EXECUTE_ACTION_TYPE_REGISTRATION;
1726 pAction->registration.fKeep = TRUE;
1727 }
1728
1729 if (BURN_PLAN_INVALID_ACTION_INDEX != iBeforeRollbackPackageAction)
1730 {
1731 hr = PlanInsertRollbackAction(iBeforeRollbackPackageAction, pPlan, &pAction);
1732 ExitOnFailure(hr, "Failed to insert keep registration rollback action.");
1733
1734 pAction->type = BURN_EXECUTE_ACTION_TYPE_REGISTRATION;
1735 pAction->registration.fKeep = FALSE;
1736 }
1737
1738LExit:
1739 return hr;
1740}
1741
1742extern "C" HRESULT PlanRemoveRegistration(
1743 __in BURN_PLAN* pPlan,
1744 __in DWORD iAfterExecutePackageAction,
1745 __in DWORD iAfterRollbackPackageAction
1746 )
1747{
1748 HRESULT hr = S_OK;
1749 BURN_EXECUTE_ACTION* pAction = NULL;
1750
1751 if (BURN_PLAN_INVALID_ACTION_INDEX != iAfterExecutePackageAction)
1752 {
1753 hr = PlanInsertExecuteAction(iAfterExecutePackageAction, pPlan, &pAction);
1754 ExitOnFailure(hr, "Failed to insert remove registration execute action.");
1755
1756 pAction->type = BURN_EXECUTE_ACTION_TYPE_REGISTRATION;
1757 pAction->registration.fKeep = FALSE;
1758 }
1759
1760 if (BURN_PLAN_INVALID_ACTION_INDEX != iAfterRollbackPackageAction)
1761 {
1762 hr = PlanInsertRollbackAction(iAfterRollbackPackageAction, pPlan, &pAction);
1763 ExitOnFailure(hr, "Failed to insert remove registration rollback action.");
1764
1765 pAction->type = BURN_EXECUTE_ACTION_TYPE_REGISTRATION;
1766 pAction->registration.fKeep = TRUE;
1767 }
1768
1769LExit:
1770 return hr;
1771}
1772
1773extern "C" HRESULT PlanRollbackBoundaryBegin( 1699extern "C" HRESULT PlanRollbackBoundaryBegin(
1774 __in BURN_PLAN* pPlan, 1700 __in BURN_PLAN* pPlan,
1775 __in BURN_ROLLBACK_BOUNDARY* pRollbackBoundary 1701 __in BURN_ROLLBACK_BOUNDARY* pRollbackBoundary
@@ -1925,6 +1851,8 @@ static void ResetPlannedPackageState(
1925 pPackage->dependencyExecute = BURN_DEPENDENCY_ACTION_NONE; 1851 pPackage->dependencyExecute = BURN_DEPENDENCY_ACTION_NONE;
1926 pPackage->dependencyRollback = BURN_DEPENDENCY_ACTION_NONE; 1852 pPackage->dependencyRollback = BURN_DEPENDENCY_ACTION_NONE;
1927 pPackage->fDependencyManagerWasHere = FALSE; 1853 pPackage->fDependencyManagerWasHere = FALSE;
1854 pPackage->expectedCacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN;
1855 pPackage->expectedInstallRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN;
1928 1856
1929 if (BURN_PACKAGE_TYPE_MSI == pPackage->type && pPackage->Msi.rgFeatures) 1857 if (BURN_PACKAGE_TYPE_MSI == pPackage->type && pPackage->Msi.rgFeatures)
1930 { 1858 {
@@ -2198,6 +2126,11 @@ static HRESULT AddCachePackageHelper(
2198 // did cache operations to verify the cache is valid so we did not plan the acquisition of the package. 2126 // did cache operations to verify the cache is valid so we did not plan the acquisition of the package.
2199 pPackage->fAcquire = (BURN_CACHE_STATE_COMPLETE != pPackage->cache); 2127 pPackage->fAcquire = (BURN_CACHE_STATE_COMPLETE != pPackage->cache);
2200 2128
2129 if (pPackage->fCanAffectRegistration)
2130 {
2131 pPackage->expectedCacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT;
2132 }
2133
2201LExit: 2134LExit:
2202 return hr; 2135 return hr;
2203} 2136}
@@ -3118,10 +3051,6 @@ static void ExecuteActionLog(
3118 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); 3051 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);
3119 break; 3052 break;
3120 3053
3121 case BURN_EXECUTE_ACTION_TYPE_REGISTRATION:
3122 LogStringLine(PlanDumpLevel, "%ls action[%u]: REGISTRATION keep: %ls", wzBase, iAction, pAction->registration.fKeep ? L"yes" : L"no");
3123 break;
3124
3125 case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY: 3054 case BURN_EXECUTE_ACTION_TYPE_ROLLBACK_BOUNDARY:
3126 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"); 3055 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");
3127 break; 3056 break;
@@ -3157,7 +3086,6 @@ extern "C" void PlanDump(
3157 LogStringLine(PlanDumpLevel, "Plan action: %hs", LoggingBurnActionToString(pPlan->action)); 3086 LogStringLine(PlanDumpLevel, "Plan action: %hs", LoggingBurnActionToString(pPlan->action));
3158 LogStringLine(PlanDumpLevel, " per-machine: %hs", LoggingTrueFalseToString(pPlan->fPerMachine)); 3087 LogStringLine(PlanDumpLevel, " per-machine: %hs", LoggingTrueFalseToString(pPlan->fPerMachine));
3159 LogStringLine(PlanDumpLevel, " disable-rollback: %hs", LoggingTrueFalseToString(pPlan->fDisableRollback)); 3088 LogStringLine(PlanDumpLevel, " disable-rollback: %hs", LoggingTrueFalseToString(pPlan->fDisableRollback));
3160 LogStringLine(PlanDumpLevel, " keep registration by default: %hs", LoggingTrueFalseToString(pPlan->fKeepRegistrationDefault));
3161 LogStringLine(PlanDumpLevel, " estimated size: %llu", pPlan->qwEstimatedSize); 3089 LogStringLine(PlanDumpLevel, " estimated size: %llu", pPlan->qwEstimatedSize);
3162 3090
3163 LogStringLine(PlanDumpLevel, "Plan cache size: %llu", pPlan->qwCacheSizeTotal); 3091 LogStringLine(PlanDumpLevel, "Plan cache size: %llu", pPlan->qwCacheSizeTotal);