diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2023-01-15 23:03:42 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2023-01-19 12:20:31 -0600 |
commit | f0e19e4355c29aa90e2b761031d61904ba1d8ffd (patch) | |
tree | d27ff80a066e32305e5efed2a7b41574de88ae31 /src/burn/engine/msiengine.cpp | |
parent | a46ef0eebafea0e5b38c0c6e960be778c2dbb852 (diff) | |
download | wix-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.cpp | 5 |
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; |