From abe316b80fae80eba54b0b79e76b6362105fa098 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 14 Jan 2022 20:48:01 -0600 Subject: Refactor some dependency detection. * Run DependencyDetect earlier * Do package dependency checking during each package/related bundle --- src/burn/engine/core.cpp | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) (limited to 'src/burn/engine/core.cpp') diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp index 8a181e7c..d70810f2 100644 --- a/src/burn/engine/core.cpp +++ b/src/burn/engine/core.cpp @@ -342,21 +342,15 @@ extern "C" HRESULT CoreDetect( hr = SearchesExecute(&pEngineState->searches, &pEngineState->variables); ExitOnFailure(hr, "Failed to execute searches."); + hr = DependencyDetectBundle(&pEngineState->dependencies, &pEngineState->registration); + ExitOnFailure(hr, "Failed to detect the dependencies."); + // Load all of the related bundles. hr = RegistrationDetectRelatedBundles(&pEngineState->registration); ExitOnFailure(hr, "Failed to detect related bundles."); - hr = DependencyDetectProviderKeyBundleId(&pEngineState->registration); - if (SUCCEEDED(hr)) - { - hr = DetectForwardCompatibleBundles(&pEngineState->userExperience, &pEngineState->registration); - ExitOnFailure(hr, "Failed to detect forward compatible bundle."); - } - else if (E_NOTFOUND == hr) - { - hr = S_OK; - } - ExitOnFailure(hr, "Failed to detect provider key bundle id."); + hr = DetectForwardCompatibleBundles(&pEngineState->userExperience, &pEngineState->registration); + ExitOnFailure(hr, "Failed to detect forward compatible bundle."); // Report the related bundles. hr = DetectReportRelatedBundles(&pEngineState->userExperience, &pEngineState->registration, pEngineState->command.relationType, &pEngineState->registration.fEligibleForCleanup); @@ -398,9 +392,6 @@ extern "C" HRESULT CoreDetect( } } - hr = DependencyDetect(&pEngineState->dependencies, &pEngineState->packages, &pEngineState->registration); - ExitOnFailure(hr, "Failed to detect the dependencies."); - // Log the detected states. for (DWORD iPackage = 0; iPackage < pEngineState->packages.cPackages; ++iPackage) { @@ -2073,19 +2064,19 @@ static HRESULT DetectPackage( switch (pPackage->type) { case BURN_PACKAGE_TYPE_EXE: - hr = ExeEngineDetectPackage(pPackage, &pEngineState->variables); + hr = ExeEngineDetectPackage(pPackage, &pEngineState->registration, &pEngineState->variables); break; case BURN_PACKAGE_TYPE_MSI: - hr = MsiEngineDetectPackage(pPackage, &pEngineState->userExperience); + hr = MsiEngineDetectPackage(pPackage, &pEngineState->registration, &pEngineState->userExperience); break; case BURN_PACKAGE_TYPE_MSP: - hr = MspEngineDetectPackage(pPackage, &pEngineState->userExperience); + hr = MspEngineDetectPackage(pPackage, &pEngineState->registration, &pEngineState->userExperience); break; case BURN_PACKAGE_TYPE_MSU: - hr = MsuEngineDetectPackage(pPackage, &pEngineState->variables); + hr = MsuEngineDetectPackage(pPackage, &pEngineState->registration, &pEngineState->variables); break; default: -- cgit v1.2.3-55-g6feb