diff options
| author | Nir Bar <nir.bar@panel-sw.co.il> | 2025-02-25 11:31:17 +0200 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2026-01-21 08:10:14 -0800 |
| commit | 49fbdf6f34b69a0157addcda2e28a96227a72630 (patch) | |
| tree | 525e82fcd8c9064eb97b29f3ccb7dbb57f821984 /src/burn/engine | |
| parent | 9a26c32398337aff57da6e92088b90314b81cf03 (diff) | |
| download | wix-49fbdf6f34b69a0157addcda2e28a96227a72630.tar.gz wix-49fbdf6f34b69a0157addcda2e28a96227a72630.tar.bz2 wix-49fbdf6f34b69a0157addcda2e28a96227a72630.zip | |
ForceAbsent can now remove a package even if it still has dependents
Resolves 8962
Diffstat (limited to 'src/burn/engine')
| -rw-r--r-- | src/burn/engine/dependency.cpp | 12 | ||||
| -rw-r--r-- | src/burn/engine/engine.mc | 6 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/burn/engine/dependency.cpp b/src/burn/engine/dependency.cpp index 767d5004..6f80c21b 100644 --- a/src/burn/engine/dependency.cpp +++ b/src/burn/engine/dependency.cpp | |||
| @@ -419,6 +419,7 @@ extern "C" HRESULT DependencyPlanPackageBegin( | |||
| 419 | STRINGDICT_HANDLE sdIgnoredDependents = NULL; | 419 | STRINGDICT_HANDLE sdIgnoredDependents = NULL; |
| 420 | BURN_DEPENDENCY_ACTION dependencyExecuteAction = BURN_DEPENDENCY_ACTION_NONE; | 420 | BURN_DEPENDENCY_ACTION dependencyExecuteAction = BURN_DEPENDENCY_ACTION_NONE; |
| 421 | BURN_DEPENDENCY_ACTION dependencyRollbackAction = BURN_DEPENDENCY_ACTION_NONE; | 421 | BURN_DEPENDENCY_ACTION dependencyRollbackAction = BURN_DEPENDENCY_ACTION_NONE; |
| 422 | BOOL fDependenciesForcedAbsent = FALSE; | ||
| 422 | BOOL fDependentBlocksUninstall = FALSE; | 423 | BOOL fDependentBlocksUninstall = FALSE; |
| 423 | BOOL fAttemptingUninstall = BOOTSTRAPPER_ACTION_STATE_UNINSTALL == pPackage->execute || pPackage->compatiblePackage.fRemove; | 424 | BOOL fAttemptingUninstall = BOOTSTRAPPER_ACTION_STATE_UNINSTALL == pPackage->execute || pPackage->compatiblePackage.fRemove; |
| 424 | 425 | ||
| @@ -467,7 +468,16 @@ extern "C" HRESULT DependencyPlanPackageBegin( | |||
| 467 | { | 468 | { |
| 468 | hr = S_OK; | 469 | hr = S_OK; |
| 469 | 470 | ||
| 470 | if (!fDependentBlocksUninstall) | 471 | if (BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT == pPackage->requested) |
| 472 | { | ||
| 473 | if (!fDependenciesForcedAbsent) | ||
| 474 | { | ||
| 475 | fDependenciesForcedAbsent = TRUE; | ||
| 476 | |||
| 477 | LogId(REPORT_STANDARD, MSG_DEPENDENCY_PACKAGE_DEPENDENTS_OVERRIDDEN, pPackage->sczId); | ||
| 478 | } | ||
| 479 | } | ||
| 480 | else if (!fDependentBlocksUninstall) | ||
| 471 | { | 481 | { |
| 472 | fDependentBlocksUninstall = TRUE; | 482 | fDependentBlocksUninstall = TRUE; |
| 473 | 483 | ||
diff --git a/src/burn/engine/engine.mc b/src/burn/engine/engine.mc index c7a07385..776f7832 100644 --- a/src/burn/engine/engine.mc +++ b/src/burn/engine/engine.mc | |||
| @@ -1282,3 +1282,9 @@ Language=English | |||
| 1282 | Skipping MSI property '%1!ls!' because condition '%2!ls!' evaluates to %3!hs!. | 1282 | Skipping MSI property '%1!ls!' because condition '%2!ls!' evaluates to %3!hs!. |
| 1283 | . | 1283 | . |
| 1284 | 1284 | ||
| 1285 | MessageId=701 | ||
| 1286 | Severity=Warning | ||
| 1287 | SymbolicName=MSG_DEPENDENCY_PACKAGE_DEPENDENTS_OVERRIDDEN | ||
| 1288 | Language=English | ||
| 1289 | BA requested to uninstall package: %1!ls!, despite dependents: | ||
| 1290 | . | ||
