diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-09-02 16:08:29 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2022-09-03 15:29:26 -0500 |
commit | e263e6bca03d783ece2f2dc86345dcdfc4b9776d (patch) | |
tree | 3f79b618040f4fa859bf273f89e712015bfe7441 /src/burn | |
parent | 85735f8b50a9dae190b08abe339aeda7a447a30b (diff) | |
download | wix-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.cpp | 68 | ||||
-rw-r--r-- | src/burn/engine/engine.mc | 7 |
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 | |||
184 | Elevated 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. | 184 | Elevated 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 | ||
187 | MessageId=23 | ||
188 | Severity=Error | ||
189 | SymbolicName=MSG_RESTART_FAILED | ||
190 | Language=English | ||
191 | The restart request failed, error: %1!ls!. The machine will need to be manually restarted. | ||
192 | . | ||
193 | |||
187 | MessageId=51 | 194 | MessageId=51 |
188 | Severity=Error | 195 | Severity=Error |
189 | SymbolicName=MSG_FAILED_PARSE_CONDITION | 196 | SymbolicName=MSG_FAILED_PARSE_CONDITION |