aboutsummaryrefslogtreecommitdiff
path: root/src/engine/detect.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-03-10 18:18:38 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-03-11 20:24:18 -0600
commitaf68033509730ffe01602f839861a47287bb709f (patch)
tree2960f6cdd023e74a4ca2bbc49d0294b7bfbed5c5 /src/engine/detect.cpp
parent10ef9d5bfbf81f454113a1c2716009831a916222 (diff)
downloadwix-af68033509730ffe01602f839861a47287bb709f.tar.gz
wix-af68033509730ffe01602f839861a47287bb709f.tar.bz2
wix-af68033509730ffe01602f839861a47287bb709f.zip
Handle when related bundles have an uninstall key but aren't cached.
#4991
Diffstat (limited to 'src/engine/detect.cpp')
-rw-r--r--src/engine/detect.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/engine/detect.cpp b/src/engine/detect.cpp
index 74e8b9ca..8ca74986 100644
--- a/src/engine/detect.cpp
+++ b/src/engine/detect.cpp
@@ -143,13 +143,16 @@ extern "C" HRESULT DetectForwardCompatibleBundles(
143 143
144 if (nCompareResult <= 0) 144 if (nCompareResult <= 0)
145 { 145 {
146 pRelatedBundle->fForwardCompatible = TRUE; 146 if (pRelatedBundle->fPlannable)
147 pRegistration->fForwardCompatibleBundleExists = TRUE; 147 {
148 pRelatedBundle->fForwardCompatible = TRUE;
149 pRegistration->fForwardCompatibleBundleExists = TRUE;
150 }
148 151
149 hr = UserExperienceOnDetectForwardCompatibleBundle(pUX, pRelatedBundle->package.sczId, pRelatedBundle->relationType, pRelatedBundle->sczTag, pRelatedBundle->package.fPerMachine, pRelatedBundle->pVersion); 152 hr = UserExperienceOnDetectForwardCompatibleBundle(pUX, pRelatedBundle->package.sczId, pRelatedBundle->relationType, pRelatedBundle->sczTag, pRelatedBundle->package.fPerMachine, pRelatedBundle->pVersion, BURN_CACHE_STATE_COMPLETE != pRelatedBundle->package.cache);
150 ExitOnRootFailure(hr, "BA aborted detect forward compatible bundle."); 153 ExitOnRootFailure(hr, "BA aborted detect forward compatible bundle.");
151 154
152 LogId(REPORT_STANDARD, MSG_DETECTED_FORWARD_COMPATIBLE_BUNDLE, pRelatedBundle->package.sczId, LoggingRelationTypeToString(pRelatedBundle->relationType), LoggingPerMachineToString(pRelatedBundle->package.fPerMachine), pRelatedBundle->pVersion->sczVersion); 155 LogId(REPORT_STANDARD, MSG_DETECTED_FORWARD_COMPATIBLE_BUNDLE, pRelatedBundle->package.sczId, LoggingRelationTypeToString(pRelatedBundle->relationType), LoggingPerMachineToString(pRelatedBundle->package.fPerMachine), pRelatedBundle->pVersion->sczVersion, LoggingCacheStateToString(pRelatedBundle->package.cache));
153 } 156 }
154 } 157 }
155 } 158 }
@@ -222,13 +225,13 @@ extern "C" HRESULT DetectReportRelatedBundles(
222 break; 225 break;
223 } 226 }
224 227
225 LogId(REPORT_STANDARD, MSG_DETECTED_RELATED_BUNDLE, pRelatedBundle->package.sczId, LoggingRelationTypeToString(pRelatedBundle->relationType), LoggingPerMachineToString(pRelatedBundle->package.fPerMachine), pRelatedBundle->pVersion->sczVersion, LoggingRelatedOperationToString(operation)); 228 LogId(REPORT_STANDARD, MSG_DETECTED_RELATED_BUNDLE, pRelatedBundle->package.sczId, LoggingRelationTypeToString(pRelatedBundle->relationType), LoggingPerMachineToString(pRelatedBundle->package.fPerMachine), pRelatedBundle->pVersion->sczVersion, LoggingRelatedOperationToString(operation), LoggingCacheStateToString(pRelatedBundle->package.cache));
226 229
227 hr = UserExperienceOnDetectRelatedBundle(pUX, pRelatedBundle->package.sczId, pRelatedBundle->relationType, pRelatedBundle->sczTag, pRelatedBundle->package.fPerMachine, pRelatedBundle->pVersion, operation); 230 hr = UserExperienceOnDetectRelatedBundle(pUX, pRelatedBundle->package.sczId, pRelatedBundle->relationType, pRelatedBundle->sczTag, pRelatedBundle->package.fPerMachine, pRelatedBundle->pVersion, operation, BURN_CACHE_STATE_COMPLETE != pRelatedBundle->package.cache);
228 ExitOnRootFailure(hr, "BA aborted detect related bundle."); 231 ExitOnRootFailure(hr, "BA aborted detect related bundle.");
229 232
230 // For now, if any related bundles will be executed during uninstall by default then never automatically clean up the bundle. 233 // For now, if any related bundles will be executed during uninstall by default then never automatically clean up the bundle.
231 if (*pfEligibleForCleanup) 234 if (*pfEligibleForCleanup && pRelatedBundle->fPlannable)
232 { 235 {
233 uninstallRequestState = BOOTSTRAPPER_REQUEST_STATE_NONE; 236 uninstallRequestState = BOOTSTRAPPER_REQUEST_STATE_NONE;
234 hr = PlanDefaultRelatedBundleRequestState(relationType, pRelatedBundle->relationType, BOOTSTRAPPER_ACTION_UNINSTALL, pRegistration->pVersion, pRelatedBundle->pVersion, &uninstallRequestState); 237 hr = PlanDefaultRelatedBundleRequestState(relationType, pRelatedBundle->relationType, BOOTSTRAPPER_ACTION_UNINSTALL, pRegistration->pVersion, pRelatedBundle->pVersion, &uninstallRequestState);