diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-01-31 16:43:44 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-02-01 23:36:23 -0600 |
commit | a2b98c1abd6e6a1469936af5d93e4ace713b3fba (patch) | |
tree | 86f49a07f09f5052dd26c8310d8df7a0cd7c19cc /src/burn/engine/detect.cpp | |
parent | c95c41151d595f4630c4c2f4aeb4c7f9a97af5c7 (diff) | |
download | wix-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.cpp | 4 |
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); |