From c5b9c47a26ca4e9d4eea63b7219b4d34938a5f1a Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Thu, 4 Feb 2021 20:18:02 -0600 Subject: Finalize MSP package registration states before logging them. --- src/engine/apply.cpp | 10 +++++----- src/engine/core.cpp | 2 -- src/engine/mspengine.cpp | 9 ++++++++- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/engine/apply.cpp b/src/engine/apply.cpp index 8d2f5757..7c47ba75 100644 --- a/src/engine/apply.cpp +++ b/src/engine/apply.cpp @@ -885,6 +885,11 @@ static void CalculateKeepRegistration( { BURN_PACKAGE* pPackage = pEngineState->packages.rgPackages + i; + if (BURN_PACKAGE_TYPE_MSP == pPackage->type) + { + MspEngineFinalizeInstallRegistrationState(pPackage); + } + LogId(REPORT_STANDARD, MSG_POST_APPLY_PACKAGE, pPackage->sczId, LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->installRegistrationState), LoggingPackageRegistrationStateToString(pPackage->fCanAffectRegistration, pPackage->cacheRegistrationState)); if (!pPackage->fCanAffectRegistration) @@ -892,11 +897,6 @@ static void CalculateKeepRegistration( continue; } - if (BURN_PACKAGE_TYPE_MSP == pPackage->type) - { - MspEngineFinalizeInstallRegistrationState(pPackage); - } - if (BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->installRegistrationState || BURN_PACKAGE_REGISTRATION_STATE_PRESENT == pPackage->cacheRegistrationState) { diff --git a/src/engine/core.cpp b/src/engine/core.cpp index 1503f8d8..644752ff 100644 --- a/src/engine/core.cpp +++ b/src/engine/core.cpp @@ -1103,8 +1103,6 @@ extern "C" HRESULT CoreCleanup( hr = CoreApply(pEngineState, pEngineState->hMessageWindow); ExitOnFailure(hr, "Apply during cleanup failed"); - // Need to think about cache=always - LExit: return hr; } diff --git a/src/engine/mspengine.cpp b/src/engine/mspengine.cpp index c0329d79..2c3a866a 100644 --- a/src/engine/mspengine.cpp +++ b/src/engine/mspengine.cpp @@ -732,7 +732,11 @@ extern "C" void MspEngineFinalizeInstallRegistrationState( __in BURN_PACKAGE* pPackage ) { - Assert(pPackage->fCanAffectRegistration); + if (!pPackage->fCanAffectRegistration) + { + ExitFunction(); + } + pPackage->installRegistrationState = BURN_PACKAGE_REGISTRATION_STATE_ABSENT; for (DWORD i = 0; i < pPackage->Msp.cTargetProductCodes; ++i) @@ -745,6 +749,9 @@ extern "C" void MspEngineFinalizeInstallRegistrationState( break; } } + +LExit: + return; } -- cgit v1.2.3-55-g6feb