From f0e19e4355c29aa90e2b761031d61904ba1d8ffd Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sun, 15 Jan 2023 23:03:42 -0600 Subject: Don't uninstall superseded MSI packages. 7147 --- src/burn/engine/msiengine.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/burn/engine/msiengine.cpp') diff --git a/src/burn/engine/msiengine.cpp b/src/burn/engine/msiengine.cpp index fec995e0..32b6660e 100644 --- a/src/burn/engine/msiengine.cpp +++ b/src/burn/engine/msiengine.cpp @@ -904,7 +904,7 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( else if ((BOOTSTRAPPER_REQUEST_STATE_ABSENT == pPackage->requested || BOOTSTRAPPER_REQUEST_STATE_CACHE == pPackage->requested) && !pPackage->fPermanent) // removing a package that should be removed. { - execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL; + execute = BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED == pPackage->currentState ? BOOTSTRAPPER_ACTION_STATE_NONE : BOOTSTRAPPER_ACTION_STATE_UNINSTALL; } else if (BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT == pPackage->requested) { @@ -968,9 +968,10 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage( case BOOTSTRAPPER_REQUEST_STATE_REPAIR: rollback = BOOTSTRAPPER_ACTION_STATE_NONE; break; + case BOOTSTRAPPER_REQUEST_STATE_CACHE: __fallthrough; case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: __fallthrough; case BOOTSTRAPPER_REQUEST_STATE_ABSENT: - rollback = BOOTSTRAPPER_ACTION_STATE_INSTALL; + rollback = BOOTSTRAPPER_ACTION_STATE_UNINSTALL == execute ? BOOTSTRAPPER_ACTION_STATE_INSTALL : BOOTSTRAPPER_ACTION_STATE_NONE; break; default: rollback = BOOTSTRAPPER_ACTION_STATE_NONE; -- cgit v1.2.3-55-g6feb