aboutsummaryrefslogtreecommitdiff
path: root/src/engine/core.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-02-18 10:44:49 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-02-22 20:25:06 -0600
commitb29af5d005c2cc802aa60a123d435042038ba8ef (patch)
treecb86e61b6abb327f8e1ebc33162acfca28bb89e9 /src/engine/core.cpp
parentdbd55be5e707f07eb044c8c7f13c3dfd246148c0 (diff)
downloadwix-b29af5d005c2cc802aa60a123d435042038ba8ef.tar.gz
wix-b29af5d005c2cc802aa60a123d435042038ba8ef.tar.bz2
wix-b29af5d005c2cc802aa60a123d435042038ba8ef.zip
Get all request states up front before building the plan.
Diffstat (limited to 'src/engine/core.cpp')
-rw-r--r--src/engine/core.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/engine/core.cpp b/src/engine/core.cpp
index b90d4b92..b68681fb 100644
--- a/src/engine/core.cpp
+++ b/src/engine/core.cpp
@@ -490,7 +490,7 @@ extern "C" HRESULT CorePlan(
490 ExitOnFailure(hr, "Failed to plan the layout of the bundle."); 490 ExitOnFailure(hr, "Failed to plan the layout of the bundle.");
491 491
492 // Plan the packages' layout. 492 // Plan the packages' layout.
493 hr = PlanPackages(&pEngineState->registration, &pEngineState->userExperience, &pEngineState->packages, &pEngineState->plan, &pEngineState->log, &pEngineState->variables, FALSE, pEngineState->command.display, pEngineState->command.relationType, sczLayoutDirectory, &hSyncpointEvent); 493 hr = PlanPackages(&pEngineState->userExperience, &pEngineState->packages, &pEngineState->plan, &pEngineState->log, &pEngineState->variables, pEngineState->command.display, pEngineState->command.relationType, sczLayoutDirectory, &hSyncpointEvent);
494 ExitOnFailure(hr, "Failed to plan packages."); 494 ExitOnFailure(hr, "Failed to plan packages.");
495 } 495 }
496 else if (BOOTSTRAPPER_ACTION_UPDATE_REPLACE == action || BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED == action) 496 else if (BOOTSTRAPPER_ACTION_UPDATE_REPLACE == action || BOOTSTRAPPER_ACTION_UPDATE_REPLACE_EMBEDDED == action)
@@ -529,7 +529,7 @@ extern "C" HRESULT CorePlan(
529 hr = PlanRelatedBundlesBegin(&pEngineState->userExperience, &pEngineState->registration, pEngineState->command.relationType, &pEngineState->plan); 529 hr = PlanRelatedBundlesBegin(&pEngineState->userExperience, &pEngineState->registration, pEngineState->command.relationType, &pEngineState->plan);
530 ExitOnFailure(hr, "Failed to plan related bundles."); 530 ExitOnFailure(hr, "Failed to plan related bundles.");
531 531
532 hr = PlanPackages(&pEngineState->registration, &pEngineState->userExperience, &pEngineState->packages, &pEngineState->plan, &pEngineState->log, &pEngineState->variables, pEngineState->registration.fInstalled, pEngineState->command.display, pEngineState->command.relationType, NULL, &hSyncpointEvent); 532 hr = PlanPackages(&pEngineState->userExperience, &pEngineState->packages, &pEngineState->plan, &pEngineState->log, &pEngineState->variables, pEngineState->command.display, pEngineState->command.relationType, NULL, &hSyncpointEvent);
533 ExitOnFailure(hr, "Failed to plan packages."); 533 ExitOnFailure(hr, "Failed to plan packages.");
534 534
535 // Schedule the update of related bundles last. 535 // Schedule the update of related bundles last.
@@ -538,10 +538,6 @@ extern "C" HRESULT CorePlan(
538 } 538 }
539 } 539 }
540 540
541 // Remove unnecessary actions.
542 hr = PlanFinalizeActions(&pEngineState->plan);
543 ExitOnFailure(hr, "Failed to remove unnecessary actions from plan.");
544
545 if (fContinuePlanning) 541 if (fContinuePlanning)
546 { 542 {
547 // Finally, display all packages and related bundles in the log. 543 // Finally, display all packages and related bundles in the log.
@@ -1814,6 +1810,18 @@ static void LogPackages(
1814 const BURN_PACKAGE* pPackage = &pPackages->rgPackages[iPackage]; 1810 const BURN_PACKAGE* pPackage = &pPackages->rgPackages[iPackage];
1815 1811
1816 LogId(REPORT_STANDARD, MSG_PLANNED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingRequestStateToString(pPackage->defaultRequested), LoggingRequestStateToString(pPackage->requested), LoggingActionStateToString(pPackage->execute), LoggingActionStateToString(pPackage->rollback), LoggingBoolToString(pPackage->fAcquire), LoggingBoolToString(pPackage->fUncache), LoggingDependencyActionToString(pPackage->dependencyExecute), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedInstallRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedCacheRegistrationState)); 1812 LogId(REPORT_STANDARD, MSG_PLANNED_PACKAGE, pPackage->sczId, LoggingPackageStateToString(pPackage->currentState), LoggingRequestStateToString(pPackage->defaultRequested), LoggingRequestStateToString(pPackage->requested), LoggingActionStateToString(pPackage->execute), LoggingActionStateToString(pPackage->rollback), LoggingBoolToString(pPackage->fAcquire), LoggingBoolToString(pPackage->fUncache), LoggingDependencyActionToString(pPackage->dependencyExecute), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedInstallRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->expectedCacheRegistrationState));
1813
1814 if (BURN_PACKAGE_TYPE_MSI == pPackage->type && pPackage->Msi.cFeatures)
1815 {
1816 LogId(REPORT_STANDARD, MSG_PLANNED_MSI_FEATURES, pPackage->Msi.cFeatures, pPackage->sczId);
1817
1818 for (DWORD j = 0; j < pPackage->Msi.cFeatures; ++j)
1819 {
1820 const BURN_MSIFEATURE* pFeature = &pPackage->Msi.rgFeatures[j];
1821
1822 LogId(REPORT_STANDARD, MSG_PLANNED_MSI_FEATURE, pFeature->sczId, LoggingMsiFeatureStateToString(pFeature->currentState), LoggingMsiFeatureStateToString(pFeature->defaultRequested), LoggingMsiFeatureStateToString(pFeature->requested), LoggingMsiFeatureActionToString(pFeature->execute), LoggingMsiFeatureActionToString(pFeature->rollback));
1823 }
1824 }
1817 } 1825 }
1818 1826
1819 // Display related bundles last if caching, installing, modifying, or repairing. 1827 // Display related bundles last if caching, installing, modifying, or repairing.