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; |
