summaryrefslogtreecommitdiff
path: root/src/burn/engine/uithread.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-05-03 15:28:31 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-05-04 10:05:21 -0500
commit41d2c12d60ee84cefc26ec99abb328701883c8f5 (patch)
treea8e53679591d625cecfd3999142a51c755a30fa3 /src/burn/engine/uithread.cpp
parente3671abae2f22c3ad7d205aa743bed73ff55e512 (diff)
downloadwix-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.cpp4
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;