diff options
Diffstat (limited to 'src/burn/engine/mspengine.cpp')
| -rw-r--r-- | src/burn/engine/mspengine.cpp | 29 |
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; |
