diff options
Diffstat (limited to 'src/engine/msiengine.cpp')
| -rw-r--r-- | src/engine/msiengine.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/engine/msiengine.cpp b/src/engine/msiengine.cpp index 5bccb375..4fdf2b7a 100644 --- a/src/engine/msiengine.cpp +++ b/src/engine/msiengine.cpp | |||
| @@ -661,6 +661,11 @@ extern "C" HRESULT MsiEngineDetectPackage( | |||
| 661 | } | 661 | } |
| 662 | } | 662 | } |
| 663 | 663 | ||
| 664 | if (pPackage->fCanAffectRegistration) | ||
| 665 | { | ||
| 666 | pPackage->installRegistrationState = BOOTSTRAPPER_PACKAGE_STATE_CACHED < pPackage->currentState ? BURN_PACKAGE_REGISTRATION_STATE_PRESENT : BURN_PACKAGE_REGISTRATION_STATE_ABSENT; | ||
| 667 | } | ||
| 668 | |||
| 664 | LExit: | 669 | LExit: |
| 665 | ReleaseStr(sczInstalledLanguage); | 670 | ReleaseStr(sczInstalledLanguage); |
| 666 | ReleaseStr(sczInstalledVersion); | 671 | ReleaseStr(sczInstalledVersion); |
| @@ -1397,6 +1402,42 @@ extern "C" HRESULT MsiEngineCalculateInstallUiLevel( | |||
| 1397 | return UserExperienceOnPlanMsiPackage(pUserExperience, wzPackageId, fExecute, actionState, pActionMsiProperty, pUiLevel, pfDisableExternalUiHandler); | 1402 | return UserExperienceOnPlanMsiPackage(pUserExperience, wzPackageId, fExecute, actionState, pActionMsiProperty, pUiLevel, pfDisableExternalUiHandler); |
| 1398 | } | 1403 | } |
| 1399 | 1404 | ||
| 1405 | extern "C" void MsiEngineUpdateInstallRegistrationState( | ||
| 1406 | __in BURN_EXECUTE_ACTION* pAction, | ||
| 1407 | __in HRESULT hrExecute, | ||
| 1408 | __in BOOL fInsideMsiTransaction | ||
| 1409 | ) | ||
| 1410 | { | ||
| 1411 | BURN_PACKAGE_REGISTRATION_STATE newState = BURN_PACKAGE_REGISTRATION_STATE_UNKNOWN; | ||
| 1412 | BURN_PACKAGE* pPackage = pAction->msiPackage.pPackage; | ||
| 1413 | |||
| 1414 | if (FAILED(hrExecute) || !pPackage->fCanAffectRegistration) | ||
| 1415 | { | ||
| 1416 | ExitFunction(); | ||
| 1417 | } | ||
| 1418 | |||
| 1419 | if (BOOTSTRAPPER_ACTION_STATE_UNINSTALL == pAction->msiPackage.action) | ||
| 1420 | { | ||
| 1421 | newState = BURN_PACKAGE_REGISTRATION_STATE_ABSENT; | ||
| 1422 | } | ||
| 1423 | else | ||
| 1424 | { | ||
| 1425 | newState = BURN_PACKAGE_REGISTRATION_STATE_PRESENT; | ||
| 1426 | } | ||
| 1427 | |||
| 1428 | if (fInsideMsiTransaction) | ||
| 1429 | { | ||
| 1430 | pPackage->transactionRegistrationState = newState; | ||
| 1431 | } | ||
| 1432 | else | ||
| 1433 | { | ||
| 1434 | pPackage->installRegistrationState = newState; | ||
| 1435 | } | ||
| 1436 | |||
| 1437 | LExit: | ||
| 1438 | return; | ||
| 1439 | } | ||
| 1440 | |||
| 1400 | 1441 | ||
| 1401 | // internal helper functions | 1442 | // internal helper functions |
| 1402 | 1443 | ||
