aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/mspengine.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-01-16 16:35:36 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-01-16 22:59:50 -0600
commit5ed5a24fae06b35351235d708b6ab410d8310d33 (patch)
tree1b3e15d3d1fdb5b81c2bb8095f64c8f40a44c464 /src/burn/engine/mspengine.cpp
parenteee408f4f52823038ca6da83693efd135c8511c8 (diff)
downloadwix-5ed5a24fae06b35351235d708b6ab410d8310d33.tar.gz
wix-5ed5a24fae06b35351235d708b6ab410d8310d33.tar.bz2
wix-5ed5a24fae06b35351235d708b6ab410d8310d33.zip
Add BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT.
Make BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT uninstall even if detected absent. Remove fPseudoBundle.
Diffstat (limited to 'src/burn/engine/mspengine.cpp')
-rw-r--r--src/burn/engine/mspengine.cpp29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/burn/engine/mspengine.cpp b/src/burn/engine/mspengine.cpp
index bc6a482a..7403e78c 100644
--- a/src/burn/engine/mspengine.cpp
+++ b/src/burn/engine/mspengine.cpp
@@ -404,6 +404,11 @@ extern "C" HRESULT MspEnginePlanCalculatePackage(
404 execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL; 404 execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL;
405 break; 405 break;
406 406
407 case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT:
408 execute = BOOTSTRAPPER_ACTION_STATE_INSTALL;
409 fWillUninstallAll = FALSE;
410 break;
411
407 default: 412 default:
408 execute = BOOTSTRAPPER_ACTION_STATE_NONE; 413 execute = BOOTSTRAPPER_ACTION_STATE_NONE;
409 fWillUninstallAll = FALSE; 414 fWillUninstallAll = FALSE;
@@ -415,11 +420,16 @@ extern "C" HRESULT MspEnginePlanCalculatePackage(
415 switch (pTargetProduct->requested) 420 switch (pTargetProduct->requested)
416 { 421 {
417 case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough; 422 case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough;
423 case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: __fallthrough;
418 case BOOTSTRAPPER_REQUEST_STATE_REPAIR: 424 case BOOTSTRAPPER_REQUEST_STATE_REPAIR:
419 execute = BOOTSTRAPPER_ACTION_STATE_INSTALL; 425 execute = BOOTSTRAPPER_ACTION_STATE_INSTALL;
420 fWillUninstallAll = FALSE; 426 fWillUninstallAll = FALSE;
421 break; 427 break;
422 428
429 case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT:
430 execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL;
431 break;
432
423 default: 433 default:
424 execute = BOOTSTRAPPER_ACTION_STATE_NONE; 434 execute = BOOTSTRAPPER_ACTION_STATE_NONE;
425 break; 435 break;
@@ -427,9 +437,25 @@ extern "C" HRESULT MspEnginePlanCalculatePackage(
427 break; 437 break;
428 438
429 default: 439 default:
430 if (pTargetProduct->fInstalled) 440 switch (pTargetProduct->requested)
431 { 441 {
442 case BOOTSTRAPPER_REQUEST_STATE_FORCE_ABSENT:
443 execute = BOOTSTRAPPER_ACTION_STATE_UNINSTALL;
444 break;
445
446 case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT:
447 execute = BOOTSTRAPPER_ACTION_STATE_INSTALL;
432 fWillUninstallAll = FALSE; 448 fWillUninstallAll = FALSE;
449 break;
450
451 default:
452 execute = BOOTSTRAPPER_ACTION_STATE_NONE;
453
454 if (pTargetProduct->fInstalled)
455 {
456 fWillUninstallAll = FALSE;
457 }
458 break;
433 } 459 }
434 break; 460 break;
435 } 461 }
@@ -457,6 +483,7 @@ extern "C" HRESULT MspEnginePlanCalculatePackage(
457 switch (pTargetProduct->requested) 483 switch (pTargetProduct->requested)
458 { 484 {
459 case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough; 485 case BOOTSTRAPPER_REQUEST_STATE_PRESENT: __fallthrough;
486 case BOOTSTRAPPER_REQUEST_STATE_FORCE_PRESENT: __fallthrough;
460 case BOOTSTRAPPER_REQUEST_STATE_REPAIR: 487 case BOOTSTRAPPER_REQUEST_STATE_REPAIR:
461 rollback = !pPackage->fPermanent ? BOOTSTRAPPER_ACTION_STATE_UNINSTALL : BOOTSTRAPPER_ACTION_STATE_NONE; 488 rollback = !pPackage->fPermanent ? BOOTSTRAPPER_ACTION_STATE_UNINSTALL : BOOTSTRAPPER_ACTION_STATE_NONE;
462 break; 489 break;