aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/apply.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/apply.cpp')
-rw-r--r--src/burn/engine/apply.cpp44
1 files changed, 26 insertions, 18 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp
index dfaba3f2..9e552ee0 100644
--- a/src/burn/engine/apply.cpp
+++ b/src/burn/engine/apply.cpp
@@ -1931,8 +1931,8 @@ static HRESULT WINAPI AuthenticationRequired(
1931 1931
1932 APPLY_AUTHENTICATION_REQUIRED_DATA* authenticationData = reinterpret_cast<APPLY_AUTHENTICATION_REQUIRED_DATA*>(pData); 1932 APPLY_AUTHENTICATION_REQUIRED_DATA* authenticationData = reinterpret_cast<APPLY_AUTHENTICATION_REQUIRED_DATA*>(pData);
1933 1933
1934 UserExperienceOnError(authenticationData->pUX, errorType, authenticationData->wzPackageOrContainerId, ERROR_ACCESS_DENIED, sczError, MB_RETRYTRYAGAIN, 0, NULL, &nResult); // ignore return value; 1934 UserExperienceOnError(authenticationData->pUX, errorType, authenticationData->wzPackageOrContainerId, ERROR_ACCESS_DENIED, sczError, MB_RETRYCANCEL, 0, NULL, &nResult); // ignore return value;
1935 nResult = UserExperienceCheckExecuteResult(authenticationData->pUX, FALSE, MB_RETRYTRYAGAIN, nResult); 1935 nResult = UserExperienceCheckExecuteResult(authenticationData->pUX, FALSE, BURN_MB_RETRYTRYAGAIN, nResult);
1936 if (IDTRYAGAIN == nResult && authenticationData->pUX->hwndApply) 1936 if (IDTRYAGAIN == nResult && authenticationData->pUX->hwndApply)
1937 { 1937 {
1938 er = ::InternetErrorDlg(authenticationData->pUX->hwndApply, hUrl, ERROR_INTERNET_INCORRECT_PASSWORD, FLAGS_ERROR_UI_FILTER_FOR_ERRORS | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS | FLAGS_ERROR_UI_FLAGS_GENERATE_DATA, NULL); 1938 er = ::InternetErrorDlg(authenticationData->pUX->hwndApply, hUrl, ERROR_INTERNET_INCORRECT_PASSWORD, FLAGS_ERROR_UI_FILTER_FOR_ERRORS | FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS | FLAGS_ERROR_UI_FLAGS_GENERATE_DATA, NULL);
@@ -2495,10 +2495,10 @@ static HRESULT ExecuteExePackage(
2495 ExitOnRootFailure(hr, "BA aborted execute EXE package begin."); 2495 ExitOnRootFailure(hr, "BA aborted execute EXE package begin.");
2496 2496
2497 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS; 2497 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS;
2498 message.dwAllowedResults = MB_OKCANCEL; 2498 message.dwUIHint = MB_OKCANCEL;
2499 message.progress.dwPercentage = fRollback ? 100 : 0; 2499 message.progress.dwPercentage = fRollback ? 100 : 0;
2500 nResult = GenericExecuteMessageHandler(&message, pContext); 2500 nResult = GenericExecuteMessageHandler(&message, pContext);
2501 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwAllowedResults, nResult); 2501 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwUIHint, nResult);
2502 ExitOnRootFailure(hr, "BA aborted EXE progress."); 2502 ExitOnRootFailure(hr, "BA aborted EXE progress.");
2503 2503
2504 fExecuted = TRUE; 2504 fExecuted = TRUE;
@@ -2516,10 +2516,10 @@ static HRESULT ExecuteExePackage(
2516 } 2516 }
2517 2517
2518 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS; 2518 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS;
2519 message.dwAllowedResults = MB_OKCANCEL; 2519 message.dwUIHint = MB_OKCANCEL;
2520 message.progress.dwPercentage = fRollback ? 0 : 100; 2520 message.progress.dwPercentage = fRollback ? 0 : 100;
2521 nResult = GenericExecuteMessageHandler(&message, pContext); 2521 nResult = GenericExecuteMessageHandler(&message, pContext);
2522 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwAllowedResults, nResult); 2522 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwUIHint, nResult);
2523 ExitOnRootFailure(hr, "BA aborted EXE progress."); 2523 ExitOnRootFailure(hr, "BA aborted EXE progress.");
2524 2524
2525 pContext->cExecutedPackages += fRollback ? -1 : 1; 2525 pContext->cExecutedPackages += fRollback ? -1 : 1;
@@ -2712,10 +2712,10 @@ static HRESULT ExecuteMsuPackage(
2712 ExitOnRootFailure(hr, "BA aborted execute MSU package begin."); 2712 ExitOnRootFailure(hr, "BA aborted execute MSU package begin.");
2713 2713
2714 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS; 2714 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS;
2715 message.dwAllowedResults = MB_OKCANCEL; 2715 message.dwUIHint = MB_OKCANCEL;
2716 message.progress.dwPercentage = fRollback ? 100 : 0; 2716 message.progress.dwPercentage = fRollback ? 100 : 0;
2717 nResult = GenericExecuteMessageHandler(&message, pContext); 2717 nResult = GenericExecuteMessageHandler(&message, pContext);
2718 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwAllowedResults, nResult); 2718 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwUIHint, nResult);
2719 ExitOnRootFailure(hr, "BA aborted MSU progress."); 2719 ExitOnRootFailure(hr, "BA aborted MSU progress.");
2720 2720
2721 fExecuted = TRUE; 2721 fExecuted = TRUE;
@@ -2733,10 +2733,10 @@ static HRESULT ExecuteMsuPackage(
2733 } 2733 }
2734 2734
2735 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS; 2735 message.type = GENERIC_EXECUTE_MESSAGE_PROGRESS;
2736 message.dwAllowedResults = MB_OKCANCEL; 2736 message.dwUIHint = MB_OKCANCEL;
2737 message.progress.dwPercentage = fRollback ? 0 : 100; 2737 message.progress.dwPercentage = fRollback ? 0 : 100;
2738 nResult = GenericExecuteMessageHandler(&message, pContext); 2738 nResult = GenericExecuteMessageHandler(&message, pContext);
2739 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwAllowedResults, nResult); 2739 hr = UserExperienceInterpretExecuteResult(&pEngineState->userExperience, fRollback, message.dwUIHint, nResult);
2740 ExitOnRootFailure(hr, "BA aborted MSU progress."); 2740 ExitOnRootFailure(hr, "BA aborted MSU progress.");
2741 2741
2742 pContext->cExecutedPackages += fRollback ? -1 : 1; 2742 pContext->cExecutedPackages += fRollback ? -1 : 1;
@@ -3047,6 +3047,7 @@ static int GenericExecuteMessageHandler(
3047 ) 3047 )
3048{ 3048{
3049 BURN_EXECUTE_CONTEXT* pContext = (BURN_EXECUTE_CONTEXT*)pvContext; 3049 BURN_EXECUTE_CONTEXT* pContext = (BURN_EXECUTE_CONTEXT*)pvContext;
3050 DWORD dwAllowedResults = pMessage->dwUIHint & MB_TYPEMASK;
3050 int nResult = IDNOACTION; 3051 int nResult = IDNOACTION;
3051 3052
3052 switch (pMessage->type) 3053 switch (pMessage->type)
@@ -3059,15 +3060,16 @@ static int GenericExecuteMessageHandler(
3059 break; 3060 break;
3060 3061
3061 case GENERIC_EXECUTE_MESSAGE_ERROR: 3062 case GENERIC_EXECUTE_MESSAGE_ERROR:
3062 UserExperienceOnError(pContext->pUX, BOOTSTRAPPER_ERROR_TYPE_EXE_PACKAGE, pContext->pExecutingPackage->sczId, pMessage->error.dwErrorCode, pMessage->error.wzMessage, pMessage->dwAllowedResults, 0, NULL, &nResult); // ignore return value. 3063 UserExperienceOnError(pContext->pUX, BOOTSTRAPPER_ERROR_TYPE_EXE_PACKAGE, pContext->pExecutingPackage->sczId, pMessage->error.dwErrorCode, pMessage->error.wzMessage, pMessage->dwUIHint, 0, NULL, &nResult); // ignore return value.
3063 break; 3064 break;
3064 3065
3065 case GENERIC_EXECUTE_MESSAGE_FILES_IN_USE: 3066 case GENERIC_EXECUTE_MESSAGE_NETFX_FILES_IN_USE:
3066 UserExperienceOnExecuteFilesInUse(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->filesInUse.cFiles, pMessage->filesInUse.rgwzFiles, &nResult); // ignore return value. 3067 UserExperienceOnExecuteFilesInUse(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->filesInUse.cFiles, pMessage->filesInUse.rgwzFiles, BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX, &nResult); // ignore return value.
3068 dwAllowedResults = BURN_MB_NETFX_FILES_IN_USE;
3067 break; 3069 break;
3068 } 3070 }
3069 3071
3070 nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, pMessage->dwAllowedResults, nResult); 3072 nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, dwAllowedResults, nResult);
3071 return nResult; 3073 return nResult;
3072} 3074}
3073 3075
@@ -3077,7 +3079,9 @@ static int MsiExecuteMessageHandler(
3077 ) 3079 )
3078{ 3080{
3079 BURN_EXECUTE_CONTEXT* pContext = (BURN_EXECUTE_CONTEXT*)pvContext; 3081 BURN_EXECUTE_CONTEXT* pContext = (BURN_EXECUTE_CONTEXT*)pvContext;
3082 DWORD dwAllowedResults = pMessage->dwUIHint & MB_TYPEMASK;
3080 int nResult = IDNOACTION; 3083 int nResult = IDNOACTION;
3084 BOOL fRestartManager = FALSE;
3081 3085
3082 switch (pMessage->type) 3086 switch (pMessage->type)
3083 { 3087 {
@@ -3090,20 +3094,24 @@ static int MsiExecuteMessageHandler(
3090 3094
3091 case WIU_MSI_EXECUTE_MESSAGE_ERROR: 3095 case WIU_MSI_EXECUTE_MESSAGE_ERROR:
3092 nResult = pMessage->nResultRecommendation; 3096 nResult = pMessage->nResultRecommendation;
3093 UserExperienceOnError(pContext->pUX, BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER, pContext->pExecutingPackage->sczId, pMessage->error.dwErrorCode, pMessage->error.wzMessage, pMessage->dwAllowedResults, pMessage->cData, pMessage->rgwzData, &nResult); // ignore return value. 3097 UserExperienceOnError(pContext->pUX, BOOTSTRAPPER_ERROR_TYPE_WINDOWS_INSTALLER, pContext->pExecutingPackage->sczId, pMessage->error.dwErrorCode, pMessage->error.wzMessage, pMessage->dwUIHint, pMessage->cData, pMessage->rgwzData, &nResult); // ignore return value.
3094 break; 3098 break;
3095 3099
3096 case WIU_MSI_EXECUTE_MESSAGE_MSI_MESSAGE: 3100 case WIU_MSI_EXECUTE_MESSAGE_MSI_MESSAGE:
3097 nResult = pMessage->nResultRecommendation; 3101 nResult = pMessage->nResultRecommendation;
3098 UserExperienceOnExecuteMsiMessage(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->msiMessage.mt, pMessage->dwAllowedResults, pMessage->msiMessage.wzMessage, pMessage->cData, pMessage->rgwzData, &nResult); // ignore return value. 3102 UserExperienceOnExecuteMsiMessage(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->msiMessage.mt, pMessage->dwUIHint, pMessage->msiMessage.wzMessage, pMessage->cData, pMessage->rgwzData, &nResult); // ignore return value.
3099 break; 3103 break;
3100 3104
3105 case WIU_MSI_EXECUTE_MESSAGE_MSI_RM_FILES_IN_USE:
3106 fRestartManager = TRUE;
3107 __fallthrough;
3101 case WIU_MSI_EXECUTE_MESSAGE_MSI_FILES_IN_USE: 3108 case WIU_MSI_EXECUTE_MESSAGE_MSI_FILES_IN_USE:
3102 UserExperienceOnExecuteFilesInUse(pContext->pUX, pContext->pExecutingPackage->sczId, pMessage->msiFilesInUse.cFiles, pMessage->msiFilesInUse.rgwzFiles, &nResult); // ignore return value. 3109 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.
3110 dwAllowedResults = fRestartManager ? BURN_MB_MSI_RM_FILES_IN_USE : BURN_MB_MSI_FILES_IN_USE;
3103 break; 3111 break;
3104 } 3112 }
3105 3113
3106 nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, pMessage->dwAllowedResults, nResult); 3114 nResult = UserExperienceCheckExecuteResult(pContext->pUX, pContext->fRollback, dwAllowedResults, nResult);
3107 return nResult; 3115 return nResult;
3108} 3116}
3109 3117