diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-04-22 16:57:18 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-04-23 15:40:21 -0500 |
commit | 0ee63890d8eacd044115524476eb9419114500a7 (patch) | |
tree | 63f7794f98a6438d29b8aae881c20c4de583a1a2 /src/burn/engine/apply.cpp | |
parent | a981e29d7a3df566754356c3fe1eb938a5cac4c1 (diff) | |
download | wix-0ee63890d8eacd044115524476eb9419114500a7.tar.gz wix-0ee63890d8eacd044115524476eb9419114500a7.tar.bz2 wix-0ee63890d8eacd044115524476eb9419114500a7.zip |
Always reset the system component status when registering the bundle.
Finishes 4454
Diffstat (limited to 'src/burn/engine/apply.cpp')
-rw-r--r-- | src/burn/engine/apply.cpp | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 69106f65..d0db053a 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
@@ -430,37 +430,18 @@ extern "C" HRESULT ApplyRegister( | |||
430 | hr = UserExperienceOnRegisterBegin(&pEngineState->userExperience, ®istrationType); | 430 | hr = UserExperienceOnRegisterBegin(&pEngineState->userExperience, ®istrationType); |
431 | ExitOnRootFailure(hr, "BA aborted register begin."); | 431 | ExitOnRootFailure(hr, "BA aborted register begin."); |
432 | 432 | ||
433 | // If we have a resume mode that suggests the bundle is on the machine. | 433 | hr = CacheCalculateBundleWorkingPath(pEngineState->plan.pCache, pEngineState->registration.sczExecutableName, &sczEngineWorkingPath); |
434 | if (BOOTSTRAPPER_RESUME_TYPE_REBOOT <= pEngineState->command.resumeType) | 434 | ExitOnFailure(hr, "Failed to calculate working path for engine."); |
435 | |||
436 | if (pEngineState->registration.fPerMachine) | ||
435 | { | 437 | { |
436 | // resume previous session | 438 | hr = ElevationSessionBegin(pEngineState->companionConnection.hPipe, sczEngineWorkingPath, pEngineState->registration.sczResumeCommandLine, pEngineState->registration.fDisableResume, &pEngineState->variables, pEngineState->plan.dwRegistrationOperations, pEngineState->registration.fDetectedForeignProviderKeyBundleId, qwEstimatedSize, registrationType); |
437 | if (pEngineState->registration.fPerMachine) | 439 | ExitOnFailure(hr, "Failed to begin registration session in per-machine process."); |
438 | { | ||
439 | hr = ElevationSessionResume(pEngineState->companionConnection.hPipe, pEngineState->registration.sczResumeCommandLine, pEngineState->registration.fDisableResume, &pEngineState->variables, registrationType); | ||
440 | ExitOnFailure(hr, "Failed to resume registration session in per-machine process."); | ||
441 | } | ||
442 | else | ||
443 | { | ||
444 | hr = RegistrationSessionResume(&pEngineState->registration, &pEngineState->variables, registrationType); | ||
445 | ExitOnFailure(hr, "Failed to resume registration session."); | ||
446 | } | ||
447 | } | 440 | } |
448 | else // need to complete registration on the machine. | 441 | else |
449 | { | 442 | { |
450 | hr = CacheCalculateBundleWorkingPath(pEngineState->plan.pCache, pEngineState->registration.sczExecutableName, &sczEngineWorkingPath); | 443 | hr = RegistrationSessionBegin(sczEngineWorkingPath, &pEngineState->registration, &pEngineState->cache, &pEngineState->variables, pEngineState->plan.dwRegistrationOperations, qwEstimatedSize, registrationType); |
451 | ExitOnFailure(hr, "Failed to calculate working path for engine."); | 444 | ExitOnFailure(hr, "Failed to begin registration session."); |
452 | |||
453 | // begin new session | ||
454 | if (pEngineState->registration.fPerMachine) | ||
455 | { | ||
456 | hr = ElevationSessionBegin(pEngineState->companionConnection.hPipe, sczEngineWorkingPath, pEngineState->registration.sczResumeCommandLine, pEngineState->registration.fDisableResume, &pEngineState->variables, pEngineState->plan.dwRegistrationOperations, pEngineState->registration.fDetectedForeignProviderKeyBundleId, qwEstimatedSize, registrationType); | ||
457 | ExitOnFailure(hr, "Failed to begin registration session in per-machine process."); | ||
458 | } | ||
459 | else | ||
460 | { | ||
461 | hr = RegistrationSessionBegin(sczEngineWorkingPath, &pEngineState->registration, &pEngineState->cache, &pEngineState->variables, pEngineState->plan.dwRegistrationOperations, qwEstimatedSize, registrationType); | ||
462 | ExitOnFailure(hr, "Failed to begin registration session."); | ||
463 | } | ||
464 | } | 445 | } |
465 | 446 | ||
466 | // Apply any registration actions. | 447 | // Apply any registration actions. |