diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-08-25 15:08:34 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-08-26 10:03:37 -0500 |
| commit | 4f5de06073ad664f60ac775da5de8c0fa1de4923 (patch) | |
| tree | 62e6d71d1e0039bdabecd785d07f9f10d023771e /src/burn/engine/exeengine.cpp | |
| parent | a37208d9a26ec7886870cc17f0726676a285bf7f (diff) | |
| download | wix-4f5de06073ad664f60ac775da5de8c0fa1de4923.tar.gz wix-4f5de06073ad664f60ac775da5de8c0fa1de4923.tar.bz2 wix-4f5de06073ad664f60ac775da5de8c0fa1de4923.zip | |
Process and return the failed version of reboot exit codes in Burn.
(ERROR_FAIL_REBOOT_REQUIRED and ERROR_FAIL_REBOOT_INITIATED)
Fixes 6762
Diffstat (limited to '')
| -rw-r--r-- | src/burn/engine/exeengine.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/burn/engine/exeengine.cpp b/src/burn/engine/exeengine.cpp index 3cb9c72a..6d326a5a 100644 --- a/src/burn/engine/exeengine.cpp +++ b/src/burn/engine/exeengine.cpp | |||
| @@ -992,6 +992,16 @@ extern "C" HRESULT ExeEngineHandleExitCode( | |||
| 992 | { | 992 | { |
| 993 | typeCode = BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT; | 993 | typeCode = BURN_EXE_EXIT_CODE_TYPE_FORCE_REBOOT; |
| 994 | } | 994 | } |
| 995 | else if (ERROR_FAIL_REBOOT_REQUIRED == dwExitCode || | ||
| 996 | HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED) == static_cast<HRESULT>(dwExitCode)) | ||
| 997 | { | ||
| 998 | typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT; | ||
| 999 | } | ||
| 1000 | else if (ERROR_FAIL_REBOOT_INITIATED == dwExitCode || | ||
| 1001 | HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_INITIATED) == static_cast<HRESULT>(dwExitCode)) | ||
| 1002 | { | ||
| 1003 | typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT; | ||
| 1004 | } | ||
| 995 | else | 1005 | else |
| 996 | { | 1006 | { |
| 997 | typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR; | 1007 | typeCode = BURN_EXE_EXIT_CODE_TYPE_ERROR; |
| @@ -1024,6 +1034,24 @@ extern "C" HRESULT ExeEngineHandleExitCode( | |||
| 1024 | hr = S_OK; | 1034 | hr = S_OK; |
| 1025 | break; | 1035 | break; |
| 1026 | 1036 | ||
| 1037 | case BURN_EXE_EXIT_CODE_TYPE_ERROR_SCHEDULE_REBOOT: | ||
| 1038 | *pRestart = BOOTSTRAPPER_APPLY_RESTART_REQUIRED; | ||
| 1039 | hr = HRESULT_FROM_WIN32(dwExitCode); | ||
| 1040 | if (SUCCEEDED(hr)) | ||
| 1041 | { | ||
| 1042 | hr = HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED); | ||
| 1043 | } | ||
| 1044 | break; | ||
| 1045 | |||
| 1046 | case BURN_EXE_EXIT_CODE_TYPE_ERROR_FORCE_REBOOT: | ||
| 1047 | *pRestart = BOOTSTRAPPER_APPLY_RESTART_INITIATED; | ||
| 1048 | hr = HRESULT_FROM_WIN32(dwExitCode); | ||
| 1049 | if (SUCCEEDED(hr)) | ||
| 1050 | { | ||
| 1051 | hr = HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_INITIATED); | ||
| 1052 | } | ||
| 1053 | break; | ||
| 1054 | |||
| 1027 | default: | 1055 | default: |
| 1028 | hr = E_UNEXPECTED; | 1056 | hr = E_UNEXPECTED; |
| 1029 | break; | 1057 | break; |
