From c7bd5d0b0f676e09d036432ee1afb9bf5dcc4fb5 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 15 Dec 2021 13:19:28 -0600 Subject: Always pass through the return value for FilesInUse messages. --- src/burn/engine/apply.cpp | 18 +++++++--- src/burn/engine/userexperience.cpp | 68 -------------------------------------- src/burn/engine/userexperience.h | 3 -- 3 files changed, 14 insertions(+), 75 deletions(-) diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 9e552ee0..e2939f40 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp @@ -3049,6 +3049,7 @@ static int GenericExecuteMessageHandler( BURN_EXECUTE_CONTEXT* pContext = (BURN_EXECUTE_CONTEXT*)pvContext; DWORD dwAllowedResults = pMessage->dwUIHint & MB_TYPEMASK; int nResult = IDNOACTION; + BOOL fPassthrough = FALSE; switch (pMessage->type) { @@ -3065,11 +3066,15 @@ static int GenericExecuteMessageHandler( case GENERIC_EXECUTE_MESSAGE_NETFX_FILES_IN_USE: UserExperienceOnExecuteFilesInUse(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->filesInUse.cFiles, pMessage->filesInUse.rgwzFiles, BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX, &nResult); // ignore return value. - dwAllowedResults = BURN_MB_NETFX_FILES_IN_USE; + fPassthrough = TRUE; break; } - nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, dwAllowedResults, nResult); + if (!fPassthrough) + { + nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, dwAllowedResults, nResult); + } + return nResult; } @@ -3082,6 +3087,7 @@ static int MsiExecuteMessageHandler( DWORD dwAllowedResults = pMessage->dwUIHint & MB_TYPEMASK; int nResult = IDNOACTION; BOOL fRestartManager = FALSE; + BOOL fPassthrough = FALSE; switch (pMessage->type) { @@ -3107,11 +3113,15 @@ static int MsiExecuteMessageHandler( __fallthrough; case WIU_MSI_EXECUTE_MESSAGE_MSI_FILES_IN_USE: UserExperienceOnExecuteFilesInUse(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->msiFilesInUse.cFiles, pMessage->msiFilesInUse.rgwzFiles, fRestartManager ? BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM : BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI, &nResult); // ignore return value. - dwAllowedResults = fRestartManager ? BURN_MB_MSI_RM_FILES_IN_USE : BURN_MB_MSI_FILES_IN_USE; + fPassthrough = TRUE; break; } - nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, dwAllowedResults, nResult); + if (!fPassthrough) + { + nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, dwAllowedResults, nResult); + } + return nResult; } diff --git a/src/burn/engine/userexperience.cpp b/src/burn/engine/userexperience.cpp index 7cc6f049..ee22a318 100644 --- a/src/burn/engine/userexperience.cpp +++ b/src/burn/engine/userexperience.cpp @@ -2607,54 +2607,6 @@ static int FilterResult( } break; - case BURN_MB_MSI_FILES_IN_USE: - // https://docs.microsoft.com/en-us/windows/win32/msi/installvalidate-action - if (IDRETRY == nResult || IDTRYAGAIN == nResult) - { - nResult = IDRETRY; - } - else if (IDCANCEL == nResult || IDABORT == nResult) - { - nResult = IDCANCEL; - } - else if (IDCONTINUE == nResult || IDIGNORE == nResult) - { - nResult = IDIGNORE; - } - else - { - nResult = IDNOACTION; - } - break; - - case BURN_MB_MSI_RM_FILES_IN_USE: - // https://docs.microsoft.com/en-us/windows/win32/msi/using-restart-manager-with-an-external-ui- - if (IDOK == nResult || IDYES == nResult) - { - nResult = IDOK; - } - else if (IDCONTINUE == nResult || IDIGNORE == nResult) - { - nResult = IDIGNORE; - } - else if (IDNO == nResult) - { - nResult = IDNO; - } - else if (IDCANCEL == nResult || IDABORT == nResult) - { - nResult = IDCANCEL; - } - else if (IDRETRY == nResult || IDTRYAGAIN == nResult) - { - nResult = IDRETRY; - } - else - { - nResult = IDNOACTION; - } - break; - case BURN_MB_RETRYTRYAGAIN: // custom return code. if (IDRETRY != nResult && IDTRYAGAIN != nResult) { @@ -2662,26 +2614,6 @@ static int FilterResult( } break; - case BURN_MB_NETFX_FILES_IN_USE: - // https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-to-get-progress-from-the-dotnet-installer - if (IDOK == nResult || IDYES == nResult) - { - nResult = IDYES; - } - else if (IDRETRY == nResult || IDTRYAGAIN == nResult) - { - nResult = IDRETRY; - } - else if (IDCANCEL == nResult || IDABORT == nResult) - { - nResult = IDCANCEL; - } - else - { - nResult = IDNO; - } - break; - default: AssertSz(FALSE, "Unknown allowed results."); break; diff --git a/src/burn/engine/userexperience.h b/src/burn/engine/userexperience.h index 75723afa..27d0a1e3 100644 --- a/src/burn/engine/userexperience.h +++ b/src/burn/engine/userexperience.h @@ -11,9 +11,6 @@ extern "C" { // constants const DWORD BURN_MB_RETRYTRYAGAIN = 0x10; -const DWORD BURN_MB_MSI_FILES_IN_USE = 0x11; -const DWORD BURN_MB_MSI_RM_FILES_IN_USE = 0x12; -const DWORD BURN_MB_NETFX_FILES_IN_USE = 0x13; // structs -- cgit v1.2.3-55-g6feb