aboutsummaryrefslogtreecommitdiff
path: root/src/burn
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-09-02 16:08:29 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-09-03 15:29:26 -0500
commite263e6bca03d783ece2f2dc86345dcdfc4b9776d (patch)
tree3f79b618040f4fa859bf273f89e712015bfe7441 /src/burn
parent85735f8b50a9dae190b08abe339aeda7a447a30b (diff)
downloadwix-e263e6bca03d783ece2f2dc86345dcdfc4b9776d.tar.gz
wix-e263e6bca03d783ece2f2dc86345dcdfc4b9776d.tar.bz2
wix-e263e6bca03d783ece2f2dc86345dcdfc4b9776d.zip
Delay closing the bundle log so that restart failures will be logged.
Diffstat (limited to 'src/burn')
-rw-r--r--src/burn/engine/engine.cpp68
-rw-r--r--src/burn/engine/engine.mc7
2 files changed, 42 insertions, 33 deletions
diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp
index 628708f5..13d23ecd 100644
--- a/src/burn/engine/engine.cpp
+++ b/src/burn/engine/engine.cpp
@@ -297,6 +297,41 @@ LExit:
297 hr = SUCCEEDED(hr) ? HRESULT_FROM_WIN32(ERROR_SUCCESS_REBOOT_REQUIRED) : HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED); 297 hr = SUCCEEDED(hr) ? HRESULT_FROM_WIN32(ERROR_SUCCESS_REBOOT_REQUIRED) : HRESULT_FROM_WIN32(ERROR_FAIL_REBOOT_REQUIRED);
298 } 298 }
299 299
300 if (fRunNormal)
301 {
302 LogId(REPORT_STANDARD, MSG_EXITING, FAILED(hr) ? (int)hr : *pdwExitCode, LoggingBoolToString(fRestart));
303 }
304 else if (fRunUntrusted)
305 {
306 LogId(REPORT_STANDARD, MSG_EXITING_CLEAN_ROOM, FAILED(hr) ? (int)hr : *pdwExitCode);
307 }
308 else if (fRunRunOnce)
309 {
310 LogId(REPORT_STANDARD, MSG_EXITING_RUN_ONCE, FAILED(hr) ? (int)hr : *pdwExitCode);
311 }
312 else if (fRunElevated)
313 {
314 LogId(REPORT_STANDARD, MSG_EXITING_ELEVATED, FAILED(hr) ? (int)hr : *pdwExitCode);
315 }
316
317 if (fLogInitialized)
318 {
319 // Leave the log open before calling restart so messages can be logged from there.
320 // Best effort to make sure all previous messages are written to disk in case the restart causes messages to be lost in buffers.
321 LogFlush();
322 }
323
324 if (fRestart)
325 {
326 LogId(REPORT_STANDARD, MSG_RESTARTING);
327
328 HRESULT hrRestart = Restart();
329 if (FAILED(hrRestart))
330 {
331 LogErrorId(hrRestart, MSG_RESTART_FAILED);
332 }
333 }
334
300 UninitializeEngineState(&engineState); 335 UninitializeEngineState(&engineState);
301 336
302 if (fXmlInitialized) 337 if (fXmlInitialized)
@@ -329,42 +364,9 @@ LExit:
329 ::CoUninitialize(); 364 ::CoUninitialize();
330 } 365 }
331 366
332 if (fRunNormal)
333 {
334 LogId(REPORT_STANDARD, MSG_EXITING, FAILED(hr) ? (int)hr : *pdwExitCode, LoggingBoolToString(fRestart));
335
336 if (fRestart)
337 {
338 LogId(REPORT_STANDARD, MSG_RESTARTING);
339 }
340 }
341 else if (fRunUntrusted)
342 {
343 LogId(REPORT_STANDARD, MSG_EXITING_CLEAN_ROOM, FAILED(hr) ? (int)hr : *pdwExitCode);
344 }
345 else if (fRunRunOnce)
346 {
347 LogId(REPORT_STANDARD, MSG_EXITING_RUN_ONCE, FAILED(hr) ? (int)hr : *pdwExitCode);
348 }
349 else if (fRunElevated)
350 {
351 LogId(REPORT_STANDARD, MSG_EXITING_ELEVATED, FAILED(hr) ? (int)hr : *pdwExitCode);
352 }
353
354
355 if (fLogInitialized) 367 if (fLogInitialized)
356 { 368 {
357 DutilUninitialize(); 369 DutilUninitialize();
358 LogClose(FALSE);
359 }
360
361 if (fRestart)
362 {
363 Restart();
364 }
365
366 if (fLogInitialized)
367 {
368 LogUninitialize(FALSE); 370 LogUninitialize(FALSE);
369 } 371 }
370 372
diff --git a/src/burn/engine/engine.mc b/src/burn/engine/engine.mc
index 32616721..dab1a504 100644
--- a/src/burn/engine/engine.mc
+++ b/src/burn/engine/engine.mc
@@ -184,6 +184,13 @@ Language=English
184Elevated engine process is not running with elevated privileges. Either run the bundle as a privileged user or reconfigure Windows to allow standard users to request elevation. 184Elevated engine process is not running with elevated privileges. Either run the bundle as a privileged user or reconfigure Windows to allow standard users to request elevation.
185. 185.
186 186
187MessageId=23
188Severity=Error
189SymbolicName=MSG_RESTART_FAILED
190Language=English
191The restart request failed, error: %1!ls!. The machine will need to be manually restarted.
192.
193
187MessageId=51 194MessageId=51
188Severity=Error 195Severity=Error
189SymbolicName=MSG_FAILED_PARSE_CONDITION 196SymbolicName=MSG_FAILED_PARSE_CONDITION