aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/msiengine.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2023-01-15 23:03:42 -0600
committerSean Hall <r.sean.hall@gmail.com>2023-01-19 12:20:31 -0600
commitf0e19e4355c29aa90e2b761031d61904ba1d8ffd (patch)
treed27ff80a066e32305e5efed2a7b41574de88ae31 /src/burn/engine/msiengine.cpp
parenta46ef0eebafea0e5b38c0c6e960be778c2dbb852 (diff)
downloadwix-f0e19e4355c29aa90e2b761031d61904ba1d8ffd.tar.gz
wix-f0e19e4355c29aa90e2b761031d61904ba1d8ffd.tar.bz2
wix-f0e19e4355c29aa90e2b761031d61904ba1d8ffd.zip
Don't uninstall superseded MSI packages.
7147
Diffstat (limited to 'src/burn/engine/msiengine.cpp')
-rw-r--r--src/burn/engine/msiengine.cpp5
1 files changed, 3 insertions, 2 deletions
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(
904 else if ((BOOTSTRAPPER_REQUEST_STATE_ABSENT == pPackage->requested || BOOTSTRAPPER_REQUEST_STATE_CACHE == pPackage->requested) && 904 else if ((BOOTSTRAPPER_REQUEST_STATE_ABSENT == pPackage->requested || BOOTSTRAPPER_REQUEST_STATE_CACHE == pPackage->requested) &&
905 !pPackage->fPermanent) // removing a package that should be removed. 905 !pPackage->fPermanent) // removing a package that should be removed.
906 { 906 {
907 execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL; 907 execute = BOOTSTRAPPER_PACKAGE_STATE_SUPERSEDED == pPackage->currentState ? BOOTSTRAPPER_ACTION_STATE_NONE : BOOTSTRAPPER_ACTION_STATE_UNINSTALL;
908 } 908 }
909 else if (BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT == pPackage->requested) 909 else if (BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT == pPackage->requested)
910 { 910 {
@@ -968,9 +968,10 @@ extern "C" HRESULT MsiEnginePlanCalculatePackage(
968 case BOOTSTRAPPER_REQUEST_STATE_REPAIR: 968 case BOOTSTRAPPER_REQUEST_STATE_REPAIR:
969 rollback = BOOTSTRAPPER_ACTION_STATE_NONE; 969 rollback = BOOTSTRAPPER_ACTION_STATE_NONE;
970 break; 970 break;
971 case BOOTSTRAPPER_REQUEST_STATE_CACHE: __fallthrough;
971 case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: __fallthrough; 972 case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT: __fallthrough;
972 case BOOTSTRAPPER_REQUEST_STATE_ABSENT: 973 case BOOTSTRAPPER_REQUEST_STATE_ABSENT:
973 rollback = BOOTSTRAPPER_ACTION_STATE_INSTALL; 974 rollback = BOOTSTRAPPER_ACTION_STATE_UNINSTALL == execute ? BOOTSTRAPPER_ACTION_STATE_INSTALL : BOOTSTRAPPER_ACTION_STATE_NONE;
974 break; 975 break;
975 default: 976 default:
976 rollback = BOOTSTRAPPER_ACTION_STATE_NONE; 977 rollback = BOOTSTRAPPER_ACTION_STATE_NONE;