From 5ed5a24fae06b35351235d708b6ab410d8310d33 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sun, 16 Jan 2022 16:35:36 -0600 Subject: Add BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT. Make BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT uninstall even if detected absent. Remove fPseudoBundle. --- src/burn/engine/mspengine.cpp | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/burn/engine/mspengine.cpp') diff --git a/src/burn/engine/mspengine.cpp b/src/burn/engine/mspengine.cpp index bc6a482a..7403e78c 100644 --- a/src/burn/engine/mspengine.cpp +++ b/src/burn/engine/mspengine.cpp @@ -404,6 +404,11 @@ extern "C" HRESULT MspEnginePlanCalculatePackage( execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL; break; + case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: + execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; + fWillUninstallAll = FALSE; + break; + default: execute = BOOTSTRAPPER_ACTION_STATE_NONE; fWillUninstallAll = FALSE; @@ -415,11 +420,16 @@ extern "C" HRESULT MspEnginePlanCalculatePackage( switch (pTargetProduct->requested) { case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough; + case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: __fallthrough; case BOOTSTRAPPER_REQUEST_STATE_REPAIR: execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; fWillUninstallAll = FALSE; break; + case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: + execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL; + break; + default: execute = BOOTSTRAPPER_ACTION_STATE_NONE; break; @@ -427,9 +437,25 @@ extern "C" HRESULT MspEnginePlanCalculatePackage( break; default: - if (pTargetProduct->fInstalled) + switch (pTargetProduct->requested) { + case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: + execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL; + break; + + case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: + execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; fWillUninstallAll = FALSE; + break; + + default: + execute = BOOTSTRAPPER_ACTION_STATE_NONE; + + if (pTargetProduct->fInstalled) + { + fWillUninstallAll = FALSE; + } + break; } break; } @@ -457,6 +483,7 @@ extern "C" HRESULT MspEnginePlanCalculatePackage( switch (pTargetProduct->requested) { case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough; + case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: __fallthrough; case BOOTSTRAPPER_REQUEST_STATE_REPAIR: rollback = !pPackage->fPermanent ? BOOTSTRAPPER_ACTION_STATE_UNINSTALL : BOOTSTRAPPER_ACTION_STATE_NONE; break; -- cgit v1.2.3-55-g6feb