diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2022-05-03 15:26:07 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2022-05-04 10:05:21 -0500 |
| commit | e3671abae2f22c3ad7d205aa743bed73ff55e512 (patch) | |
| tree | b8d8e84e5d71f21e02c89a0da7a819e7a2078e50 /src | |
| parent | 5b04bce6567855325810bc4e6bcd2f6e05b329c7 (diff) | |
| download | wix-e3671abae2f22c3ad7d205aa743bed73ff55e512.tar.gz wix-e3671abae2f22c3ad7d205aa743bed73ff55e512.tar.bz2 wix-e3671abae2f22c3ad7d205aa743bed73ff55e512.zip | |
Allow burn.runonce with burn.clean.room and create runonce log.
Diffstat (limited to 'src')
| -rw-r--r-- | src/burn/engine/core.cpp | 9 | ||||
| -rw-r--r-- | src/burn/engine/engine.cpp | 12 | ||||
| -rw-r--r-- | src/burn/engine/logging.cpp | 12 |
3 files changed, 25 insertions, 8 deletions
diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp index be8c011f..ec996c4c 100644 --- a/src/burn/engine/core.cpp +++ b/src/burn/engine/core.cpp | |||
| @@ -1753,13 +1753,16 @@ extern "C" HRESULT CoreParseCommandLine( | |||
| 1753 | } | 1753 | } |
| 1754 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_RUNONCE, -1)) | 1754 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_RUNONCE, -1)) |
| 1755 | { | 1755 | { |
| 1756 | if (BURN_MODE_UNKNOWN != pInternalCommand->mode) | 1756 | switch (pInternalCommand->mode) |
| 1757 | { | 1757 | { |
| 1758 | case BURN_MODE_UNKNOWN: __fallthrough; | ||
| 1759 | case BURN_MODE_NORMAL: | ||
| 1760 | pInternalCommand->mode = BURN_MODE_RUNONCE; | ||
| 1761 | break; | ||
| 1762 | default: | ||
| 1758 | fInvalidCommandLine = TRUE; | 1763 | fInvalidCommandLine = TRUE; |
| 1759 | TraceLog(E_INVALIDARG, "Multiple mode command-line switches were provided."); | 1764 | TraceLog(E_INVALIDARG, "Multiple mode command-line switches were provided."); |
| 1760 | } | 1765 | } |
| 1761 | |||
| 1762 | pInternalCommand->mode = BURN_MODE_RUNONCE; | ||
| 1763 | } | 1766 | } |
| 1764 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], lstrlenW(BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES), BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES, lstrlenW(BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES))) | 1767 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], lstrlenW(BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES), BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES, lstrlenW(BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES))) |
| 1765 | { | 1768 | { |
diff --git a/src/burn/engine/engine.cpp b/src/burn/engine/engine.cpp index 9b94552b..821626f8 100644 --- a/src/burn/engine/engine.cpp +++ b/src/burn/engine/engine.cpp | |||
| @@ -33,7 +33,7 @@ static HRESULT RunEmbedded( | |||
| 33 | __in BURN_ENGINE_STATE* pEngineState | 33 | __in BURN_ENGINE_STATE* pEngineState |
| 34 | ); | 34 | ); |
| 35 | static HRESULT RunRunOnce( | 35 | static HRESULT RunRunOnce( |
| 36 | __in const BURN_REGISTRATION* pRegistration, | 36 | __in BURN_ENGINE_STATE* pEngineState, |
| 37 | __in int nCmdShow | 37 | __in int nCmdShow |
| 38 | ); | 38 | ); |
| 39 | static HRESULT RunApplication( | 39 | static HRESULT RunApplication( |
| @@ -221,7 +221,7 @@ extern "C" HRESULT EngineRun( | |||
| 221 | break; | 221 | break; |
| 222 | 222 | ||
| 223 | case BURN_MODE_RUNONCE: | 223 | case BURN_MODE_RUNONCE: |
| 224 | hr = RunRunOnce(&engineState.registration, nCmdShow); | 224 | hr = RunRunOnce(&engineState, nCmdShow); |
| 225 | ExitOnFailure(hr, "Failed to run RunOnce mode."); | 225 | ExitOnFailure(hr, "Failed to run RunOnce mode."); |
| 226 | break; | 226 | break; |
| 227 | 227 | ||
| @@ -703,7 +703,7 @@ LExit: | |||
| 703 | } | 703 | } |
| 704 | 704 | ||
| 705 | static HRESULT RunRunOnce( | 705 | static HRESULT RunRunOnce( |
| 706 | __in const BURN_REGISTRATION* pRegistration, | 706 | __in BURN_ENGINE_STATE* pEngineState, |
| 707 | __in int nCmdShow | 707 | __in int nCmdShow |
| 708 | ) | 708 | ) |
| 709 | { | 709 | { |
| @@ -712,7 +712,11 @@ static HRESULT RunRunOnce( | |||
| 712 | LPWSTR sczBurnPath = NULL; | 712 | LPWSTR sczBurnPath = NULL; |
| 713 | HANDLE hProcess = NULL; | 713 | HANDLE hProcess = NULL; |
| 714 | 714 | ||
| 715 | hr = RegistrationGetResumeCommandLine(pRegistration, &sczNewCommandLine); | 715 | // Initialize logging. |
| 716 | hr = LoggingOpen(&pEngineState->log, &pEngineState->internalCommand, &pEngineState->command, &pEngineState->variables, pEngineState->registration.sczDisplayName); | ||
| 717 | ExitOnFailure(hr, "Failed to open run once log."); | ||
| 718 | |||
| 719 | hr = RegistrationGetResumeCommandLine(&pEngineState->registration, &sczNewCommandLine); | ||
| 716 | ExitOnFailure(hr, "Unable to get resume command line from the registry"); | 720 | ExitOnFailure(hr, "Unable to get resume command line from the registry"); |
| 717 | 721 | ||
| 718 | // and re-launch | 722 | // and re-launch |
diff --git a/src/burn/engine/logging.cpp b/src/burn/engine/logging.cpp index 0b510f3d..1b2bec1f 100644 --- a/src/burn/engine/logging.cpp +++ b/src/burn/engine/logging.cpp | |||
| @@ -39,7 +39,17 @@ extern "C" HRESULT LoggingOpen( | |||
| 39 | HRESULT hr = S_OK; | 39 | HRESULT hr = S_OK; |
| 40 | LPWSTR sczLoggingBaseFolder = NULL; | 40 | LPWSTR sczLoggingBaseFolder = NULL; |
| 41 | LPWSTR sczPrefixFormatted = NULL; | 41 | LPWSTR sczPrefixFormatted = NULL; |
| 42 | LPCWSTR wzPostfix = BURN_MODE_UNTRUSTED == pInternalCommand->mode ? L".cleanroom" : NULL; | 42 | LPCWSTR wzPostfix = NULL; |
| 43 | |||
| 44 | switch (pInternalCommand->mode) | ||
| 45 | { | ||
| 46 | case BURN_MODE_UNTRUSTED: | ||
| 47 | wzPostfix = L".cleanroom"; | ||
| 48 | break; | ||
| 49 | case BURN_MODE_RUNONCE: | ||
| 50 | wzPostfix = L".runonce"; | ||
| 51 | break; | ||
| 52 | } | ||
| 43 | 53 | ||
| 44 | hr = InitializeLogging(pLog, pInternalCommand); | 54 | hr = InitializeLogging(pLog, pInternalCommand); |
| 45 | ExitOnFailure(hr, "Failed to initialize logging."); | 55 | ExitOnFailure(hr, "Failed to initialize logging."); |
