diff options
Diffstat (limited to 'src/burn/engine/apply.cpp')
-rw-r--r-- | src/burn/engine/apply.cpp | 44 |
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 | ||