aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/detect.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-01-31 16:43:44 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-02-01 23:36:23 -0600
commita2b98c1abd6e6a1469936af5d93e4ace713b3fba (patch)
tree86f49a07f09f5052dd26c8310d8df7a0cd7c19cc /src/burn/engine/detect.cpp
parentc95c41151d595f4630c4c2f4aeb4c7f9a97af5c7 (diff)
downloadwix-a2b98c1abd6e6a1469936af5d93e4ace713b3fba.tar.gz
wix-a2b98c1abd6e6a1469936af5d93e4ace713b3fba.tar.bz2
wix-a2b98c1abd6e6a1469936af5d93e4ace713b3fba.zip
Remove some assumptions in dependency planning.
* A package might be installed even if it was already present. * A package might be uninstalled even if it was already absent. * The bundle might not actually be uninstalled even if the planned action was uninstall. Fixes #6510
Diffstat (limited to 'src/burn/engine/detect.cpp')
-rw-r--r--src/burn/engine/detect.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/burn/engine/detect.cpp b/src/burn/engine/detect.cpp
index 617b418b..e251871c 100644
--- a/src/burn/engine/detect.cpp
+++ b/src/burn/engine/detect.cpp
@@ -57,7 +57,6 @@ extern "C" void DetectReset(
57 BURN_PACKAGE* pPackage = pPackages->rgPackages + iPackage; 57 BURN_PACKAGE* pPackage = pPackages->rgPackages + iPackage;
58 58
59 pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN; 59 pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN;
60 pPackage->fPackageProviderExists = FALSE;
61 pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN; 60 pPackage->cacheRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN;
62 pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN; 61 pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN;
63 62
@@ -92,6 +91,9 @@ extern "C" void DetectReset(
92 { 91 {
93 BURN_DEPENDENCY_PROVIDER* pProvider = pPackage->rgDependencyProviders + iProvider; 92 BURN_DEPENDENCY_PROVIDER* pProvider = pPackage->rgDependencyProviders + iProvider;
94 93
94 pProvider->fExists = FALSE;
95 pProvider->fBundleRegisteredAsDependent = FALSE;
96
95 if (pProvider->rgDependents) 97 if (pProvider->rgDependents)
96 { 98 {
97 ReleaseDependencyArray(pProvider->rgDependents, pProvider->cDependents); 99 ReleaseDependencyArray(pProvider->rgDependents, pProvider->cDependents);