diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-05-03 15:28:31 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-05-04 10:05:21 -0500 |
commit | 41d2c12d60ee84cefc26ec99abb328701883c8f5 (patch) | |
tree | a8e53679591d625cecfd3999142a51c755a30fa3 /src/burn/engine/uithread.cpp | |
parent | e3671abae2f22c3ad7d205aa743bed73ff55e512 (diff) | |
download | wix-41d2c12d60ee84cefc26ec99abb328701883c8f5.tar.gz wix-41d2c12d60ee84cefc26ec99abb328701883c8f5.tar.bz2 wix-41d2c12d60ee84cefc26ec99abb328701883c8f5.zip |
Assume critical shutdown was caused by the current package.
Packages should not be retried if a restart was initiated.
Only the first package that initiated restart should be stored in BURN_BUNDLE_FORCED_RESTART_PACKAGE.
Diffstat (limited to 'src/burn/engine/uithread.cpp')
-rw-r--r-- | src/burn/engine/uithread.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/burn/engine/uithread.cpp b/src/burn/engine/uithread.cpp index 187f3349..bb1e5972 100644 --- a/src/burn/engine/uithread.cpp +++ b/src/burn/engine/uithread.cpp | |||
@@ -18,6 +18,7 @@ struct UITHREAD_INFO | |||
18 | { | 18 | { |
19 | BOOL fElevatedEngine; | 19 | BOOL fElevatedEngine; |
20 | BURN_USER_EXPERIENCE* pUserExperience; | 20 | BURN_USER_EXPERIENCE* pUserExperience; |
21 | BOOL* pfCriticalShutdownInitiated; | ||
21 | }; | 22 | }; |
22 | 23 | ||
23 | 24 | ||
@@ -132,6 +133,7 @@ static DWORD WINAPI ThreadProc( | |||
132 | 133 | ||
133 | info.fElevatedEngine = fElevatedEngine; | 134 | info.fElevatedEngine = fElevatedEngine; |
134 | info.pUserExperience = &pEngineState->userExperience; | 135 | info.pUserExperience = &pEngineState->userExperience; |
136 | info.pfCriticalShutdownInitiated = &pEngineState->fCriticalShutdownInitiated; | ||
135 | 137 | ||
136 | // Create the window to handle reboots without activating it. | 138 | // Create the window to handle reboots without activating it. |
137 | hWnd = ::CreateWindowExW(WS_EX_NOACTIVATE, wc.lpszClassName, NULL, WS_POPUP, 0, 0, 0, 0, HWND_DESKTOP, NULL, pContext->hInstance, &info); | 139 | hWnd = ::CreateWindowExW(WS_EX_NOACTIVATE, wc.lpszClassName, NULL, WS_POPUP, 0, 0, 0, 0, HWND_DESKTOP, NULL, pContext->hInstance, &info); |
@@ -208,6 +210,8 @@ static LRESULT CALLBACK WndProc( | |||
208 | UserExperienceOnSystemShutdown(pInfo->pUserExperience, dwEndSession, &fCancel); | 210 | UserExperienceOnSystemShutdown(pInfo->pUserExperience, dwEndSession, &fCancel); |
209 | } | 211 | } |
210 | 212 | ||
213 | *pInfo->pfCriticalShutdownInitiated |= fCritical; | ||
214 | |||
211 | fRet = !fCancel; | 215 | fRet = !fCancel; |
212 | LogId(REPORT_STANDARD, MSG_SYSTEM_SHUTDOWN, LoggingBoolToString(fCritical), LoggingBoolToString(pInfo->fElevatedEngine), LoggingBoolToString(fRet)); | 216 | LogId(REPORT_STANDARD, MSG_SYSTEM_SHUTDOWN, LoggingBoolToString(fCritical), LoggingBoolToString(pInfo->fElevatedEngine), LoggingBoolToString(fRet)); |
213 | return fRet; | 217 | return fRet; |