summaryrefslogtreecommitdiff
path: root/src/burn/engine/plan.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-06-14 15:10:07 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-06-14 21:51:14 -0500
commit98c369a92891244bde76448ae4a2b623b3ab394c (patch)
tree398105d02a888ba41b426e84965375e491d79bb7 /src/burn/engine/plan.cpp
parentdea657295df261bb0e3e4d620eeae321531e3a11 (diff)
downloadwix-98c369a92891244bde76448ae4a2b623b3ab394c.tar.gz
wix-98c369a92891244bde76448ae4a2b623b3ab394c.tar.bz2
wix-98c369a92891244bde76448ae4a2b623b3ab394c.zip
Allow BundlePackage to fallback to QuietUninstallString to uninstall.
Partial implementation of 6756
Diffstat (limited to 'src/burn/engine/plan.cpp')
-rw-r--r--src/burn/engine/plan.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/burn/engine/plan.cpp b/src/burn/engine/plan.cpp
index 18f9b274..5c9ebe08 100644
--- a/src/burn/engine/plan.cpp
+++ b/src/burn/engine/plan.cpp
@@ -2805,13 +2805,16 @@ static BURN_CACHE_PACKAGE_TYPE GetCachePackageType(
2805 case BOOTSTRAPPER_ACTION_STATE_NONE: 2805 case BOOTSTRAPPER_ACTION_STATE_NONE:
2806 break; 2806 break;
2807 case BOOTSTRAPPER_ACTION_STATE_UNINSTALL: 2807 case BOOTSTRAPPER_ACTION_STATE_UNINSTALL:
2808 if (BURN_PACKAGE_TYPE_BUNDLE == pPackage->type || 2808 if (BURN_PACKAGE_TYPE_EXE == pPackage->type && BURN_EXE_DETECTION_TYPE_ARP != pPackage->Exe.detectionType)
2809 BURN_PACKAGE_TYPE_EXE == pPackage->type && BURN_EXE_DETECTION_TYPE_ARP != pPackage->Exe.detectionType)
2810 { 2809 {
2811 // Bundle and non-ArpEntry Exe packages require the package for all operations (even uninstall). 2810 // non-ArpEntry Exe packages require the package for all operations (even uninstall).
2812 // TODO: bundles could theoretically use package cache.
2813 cachePackageType = BURN_CACHE_PACKAGE_TYPE_REQUIRED; 2811 cachePackageType = BURN_CACHE_PACKAGE_TYPE_REQUIRED;
2814 } 2812 }
2813 else if (BURN_PACKAGE_TYPE_BUNDLE == pPackage->type)
2814 {
2815 // Bundle packages prefer the cache but can fallback to the ARP registration.
2816 cachePackageType = BURN_CACHE_PACKAGE_TYPE_OPTIONAL;
2817 }
2815 else 2818 else
2816 { 2819 {
2817 // The other package types can uninstall without the original package. 2820 // The other package types can uninstall without the original package.
@@ -2823,6 +2826,7 @@ static BURN_CACHE_PACKAGE_TYPE GetCachePackageType(
2823 case BOOTSTRAPPER_ACTION_STATE_REPAIR: __fallthrough; 2826 case BOOTSTRAPPER_ACTION_STATE_REPAIR: __fallthrough;
2824 case BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE: __fallthrough; 2827 case BOOTSTRAPPER_ACTION_STATE_MINOR_UPGRADE: __fallthrough;
2825 default: 2828 default:
2829 // TODO: bundles could theoretically use package cache.
2826 cachePackageType = BURN_CACHE_PACKAGE_TYPE_REQUIRED; 2830 cachePackageType = BURN_CACHE_PACKAGE_TYPE_REQUIRED;
2827 break; 2831 break;
2828 } 2832 }