From 4cd1c4e06145434ca940ac828772dc47b9d9738e Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sun, 13 Mar 2022 23:45:32 -0500 Subject: Allow the BA to override the bundle relation type during plan. --- src/burn/engine/bundlepackageengine.cpp | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/burn/engine/bundlepackageengine.cpp') diff --git a/src/burn/engine/bundlepackageengine.cpp b/src/burn/engine/bundlepackageengine.cpp index b5fc51e5..88a00f5e 100644 --- a/src/burn/engine/bundlepackageengine.cpp +++ b/src/burn/engine/bundlepackageengine.cpp @@ -2,7 +2,9 @@ #include "precomp.h" - +static BOOTSTRAPPER_RELATION_TYPE ConvertRelationType( + __in BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE relationType + ); // function definitions @@ -265,7 +267,7 @@ extern "C" HRESULT BundlePackageEngineExecuteRelatedBundle( GENERIC_EXECUTE_MESSAGE message = { }; BOOTSTRAPPER_ACTION_STATE action = pExecuteAction->relatedBundle.action; BURN_RELATED_BUNDLE* pRelatedBundle = pExecuteAction->relatedBundle.pRelatedBundle; - BOOTSTRAPPER_RELATION_TYPE relationType = pRelatedBundle->relationType; + BOOTSTRAPPER_RELATION_TYPE relationType = ConvertRelationType(pRelatedBundle->planRelationType); BURN_PACKAGE* pPackage = &pRelatedBundle->package; BURN_PAYLOAD* pPackagePayload = pPackage->payloads.rgItems[0].pPayload; LPCWSTR wzRelationTypeCommandLine = CoreRelationTypeToCommandLineString(relationType); @@ -467,3 +469,26 @@ LExit: return hr; } + +static BOOTSTRAPPER_RELATION_TYPE ConvertRelationType( + __in BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE relationType + ) +{ + switch (relationType) + { + case BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DOWNGRADE: __fallthrough; + case BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_UPGRADE: + return BOOTSTRAPPER_RELATION_UPGRADE; + case BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_ADDON: + return BOOTSTRAPPER_RELATION_ADDON; + case BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_PATCH: + return BOOTSTRAPPER_RELATION_PATCH; + case BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_ADDON: + return BOOTSTRAPPER_RELATION_DEPENDENT_ADDON; + case BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_DEPENDENT_PATCH: + return BOOTSTRAPPER_RELATION_DEPENDENT_PATCH; + default: + AssertSz(BOOTSTRAPPER_RELATED_BUNDLE_PLAN_TYPE_NONE == relationType, "Unknown BUNDLE_RELATION_TYPE"); + return BOOTSTRAPPER_RELATION_NONE; + } +} -- cgit v1.2.3-55-g6feb