diff options
Diffstat (limited to 'src/burn/engine/core.cpp')
-rw-r--r-- | src/burn/engine/core.cpp | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp index 9d5364a4..ca4d607b 100644 --- a/src/burn/engine/core.cpp +++ b/src/burn/engine/core.cpp | |||
@@ -315,26 +315,19 @@ extern "C" HRESULT CoreDetect( | |||
315 | DetectReset(&pEngineState->registration, &pEngineState->packages); | 315 | DetectReset(&pEngineState->registration, &pEngineState->packages); |
316 | PlanReset(&pEngineState->plan, &pEngineState->containers, &pEngineState->packages, &pEngineState->layoutPayloads); | 316 | PlanReset(&pEngineState->plan, &pEngineState->containers, &pEngineState->packages, &pEngineState->layoutPayloads); |
317 | 317 | ||
318 | // Detect if bundle installed state has changed since start up. This | 318 | // Detect if bundle installed state has changed since start up. |
319 | // only happens if Apply() changed the state of bundle (installed or | 319 | // This only happens if Apply() changed the state of bundle (installed, in progress, or uninstalled). |
320 | // uninstalled). In that case, Detect() can be used here to reset | 320 | // In that case, Detect() can be used here to reset the installed state. |
321 | // the installed state. | 321 | // Of course, there's also cases outside of this bundle's control, |
322 | // like other processes messing with its registration. | ||
322 | hr = RegistrationDetectInstalled(&pEngineState->registration); | 323 | hr = RegistrationDetectInstalled(&pEngineState->registration); |
323 | ExitOnFailure(hr, "Failed to detect bundle install state."); | 324 | ExitOnFailure(hr, "Failed to detect bundle install state."); |
324 | 325 | ||
325 | if (pEngineState->registration.fInstalled) | 326 | hr = RegistrationSetDynamicVariables(&pEngineState->registration, &pEngineState->variables); |
326 | { | 327 | ExitOnFailure(hr, "Failed to reset the dynamic registration variables during detect."); |
327 | hr = VariableSetNumeric(&pEngineState->variables, BURN_BUNDLE_INSTALLED, 1, TRUE); | ||
328 | ExitOnFailure(hr, "Failed to set the bundle installed built-in variable."); | ||
329 | } | ||
330 | else | ||
331 | { | ||
332 | hr = VariableSetString(&pEngineState->variables, BURN_BUNDLE_INSTALLED, NULL, TRUE, FALSE); | ||
333 | ExitOnFailure(hr, "Failed to unset the bundle installed built-in variable."); | ||
334 | } | ||
335 | 328 | ||
336 | fDetectBegan = TRUE; | 329 | fDetectBegan = TRUE; |
337 | hr = UserExperienceOnDetectBegin(&pEngineState->userExperience, pEngineState->registration.fCached, pEngineState->registration.fInstalled, pEngineState->packages.cPackages); | 330 | hr = UserExperienceOnDetectBegin(&pEngineState->userExperience, pEngineState->registration.fCached, pEngineState->registration.detectedRegistrationType, pEngineState->packages.cPackages); |
338 | ExitOnRootFailure(hr, "UX aborted detect begin."); | 331 | ExitOnRootFailure(hr, "UX aborted detect begin."); |
339 | 332 | ||
340 | pEngineState->userExperience.hwndDetect = hwndParent; | 333 | pEngineState->userExperience.hwndDetect = hwndParent; |
@@ -444,7 +437,7 @@ LExit: | |||
444 | 437 | ||
445 | pEngineState->userExperience.hwndDetect = NULL; | 438 | pEngineState->userExperience.hwndDetect = NULL; |
446 | 439 | ||
447 | LogId(REPORT_STANDARD, MSG_DETECT_COMPLETE, hr, !fDetectBegan ? "(failed)" : LoggingBoolToString(pEngineState->registration.fInstalled), !fDetectBegan ? "(failed)" : LoggingBoolToString(pEngineState->registration.fCached), FAILED(hr) ? "(failed)" : LoggingBoolToString(pEngineState->registration.fEligibleForCleanup)); | 440 | LogId(REPORT_STANDARD, MSG_DETECT_COMPLETE, hr, !fDetectBegan ? "(failed)" : LoggingRegistrationTypeToString(pEngineState->registration.detectedRegistrationType), !fDetectBegan ? "(failed)" : LoggingBoolToString(pEngineState->registration.fCached), FAILED(hr) ? "(failed)" : LoggingBoolToString(pEngineState->registration.fEligibleForCleanup)); |
448 | 441 | ||
449 | return hr; | 442 | return hr; |
450 | } | 443 | } |
@@ -489,7 +482,7 @@ extern "C" HRESULT CorePlan( | |||
489 | pEngineState->plan.wzBundleId = pEngineState->registration.sczId; | 482 | pEngineState->plan.wzBundleId = pEngineState->registration.sczId; |
490 | pEngineState->plan.wzBundleProviderKey = pEngineState->registration.sczId; | 483 | pEngineState->plan.wzBundleProviderKey = pEngineState->registration.sczId; |
491 | pEngineState->plan.fDisableRollback = pEngineState->fDisableRollback || BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL == pEngineState->plan.action; | 484 | pEngineState->plan.fDisableRollback = pEngineState->fDisableRollback || BOOTSTRAPPER_ACTION_UNSAFE_UNINSTALL == pEngineState->plan.action; |
492 | pEngineState->plan.fBundleAlreadyRegistered = pEngineState->registration.fInstalled; | 485 | pEngineState->plan.fPlanPackageCacheRollback = BOOTSTRAPPER_REGISTRATION_TYPE_NONE == pEngineState->registration.detectedRegistrationType; |
493 | 486 | ||
494 | hr = PlanSetVariables(action, &pEngineState->variables); | 487 | hr = PlanSetVariables(action, &pEngineState->variables); |
495 | ExitOnFailure(hr, "Failed to update action."); | 488 | ExitOnFailure(hr, "Failed to update action."); |