aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/engine/core.cpp')
-rw-r--r--src/burn/engine/core.cpp225
1 files changed, 20 insertions, 205 deletions
diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp
index ca2e41c2..ae74fdfd 100644
--- a/src/burn/engine/core.cpp
+++ b/src/burn/engine/core.cpp
@@ -43,11 +43,6 @@ static HRESULT EscapeAndAppendArgumentToCommandLineFormattedArgs(
43 __in __format_string LPCWSTR wzFormat, 43 __in __format_string LPCWSTR wzFormat,
44 __in va_list args 44 __in va_list args
45 ); 45 );
46static HRESULT AppendLayoutToCommandLine(
47 __in BOOTSTRAPPER_ACTION action,
48 __in_z LPCWSTR wzLayoutDirectory,
49 __deref_inout_z LPWSTR* psczCommandLine
50 );
51static HRESULT GetSanitizedCommandLine( 46static HRESULT GetSanitizedCommandLine(
52 __in BURN_ENGINE_COMMAND* pInternalCommand, 47 __in BURN_ENGINE_COMMAND* pInternalCommand,
53 __in BOOTSTRAPPER_COMMAND* pCommand, 48 __in BOOTSTRAPPER_COMMAND* pCommand,
@@ -151,18 +146,6 @@ extern "C" HRESULT CoreInitialize(
151 ExitOnFailure(hr, "Failed to overwrite the bundle active parent built-in variable."); 146 ExitOnFailure(hr, "Failed to overwrite the bundle active parent built-in variable.");
152 } 147 }
153 148
154 if (pEngineState->internalCommand.sczSourceProcessPath)
155 {
156 hr = VariableSetString(&pEngineState->variables, BURN_BUNDLE_SOURCE_PROCESS_PATH, pEngineState->internalCommand.sczSourceProcessPath, TRUE, FALSE);
157 ExitOnFailure(hr, "Failed to set source process path variable.");
158
159 hr = PathGetDirectory(pEngineState->internalCommand.sczSourceProcessPath, &sczSourceProcessFolder);
160 ExitOnFailure(hr, "Failed to get source process folder from path.");
161
162 hr = VariableSetString(&pEngineState->variables, BURN_BUNDLE_SOURCE_PROCESS_FOLDER, sczSourceProcessFolder, TRUE, FALSE);
163 ExitOnFailure(hr, "Failed to set source process folder variable.");
164 }
165
166 // Set BURN_BUNDLE_ORIGINAL_SOURCE, if it was passed in on the command line. 149 // Set BURN_BUNDLE_ORIGINAL_SOURCE, if it was passed in on the command line.
167 // Needs to be done after ManifestLoadXmlFromBuffer. 150 // Needs to be done after ManifestLoadXmlFromBuffer.
168 if (pEngineState->internalCommand.sczOriginalSource) 151 if (pEngineState->internalCommand.sczOriginalSource)
@@ -171,9 +154,9 @@ extern "C" HRESULT CoreInitialize(
171 ExitOnFailure(hr, "Failed to set original source variable."); 154 ExitOnFailure(hr, "Failed to set original source variable.");
172 } 155 }
173 156
174 if (BURN_MODE_UNTRUSTED == pEngineState->internalCommand.mode || BURN_MODE_NORMAL == pEngineState->internalCommand.mode || BURN_MODE_EMBEDDED == pEngineState->internalCommand.mode) 157 if (BURN_MODE_NORMAL == pEngineState->internalCommand.mode || BURN_MODE_EMBEDDED == pEngineState->internalCommand.mode)
175 { 158 {
176 hr = CacheInitializeSources(&pEngineState->cache, &pEngineState->registration, &pEngineState->variables, &pEngineState->internalCommand); 159 hr = CacheInitializeSources(&pEngineState->cache, &pEngineState->registration, &pEngineState->variables);
177 ExitOnFailure(hr, "Failed to initialize internal cache source functionality."); 160 ExitOnFailure(hr, "Failed to initialize internal cache source functionality.");
178 } 161 }
179 162
@@ -182,7 +165,7 @@ extern "C" HRESULT CoreInitialize(
182 if (BURN_MODE_NORMAL == pEngineState->internalCommand.mode || BURN_MODE_EMBEDDED == pEngineState->internalCommand.mode) 165 if (BURN_MODE_NORMAL == pEngineState->internalCommand.mode || BURN_MODE_EMBEDDED == pEngineState->internalCommand.mode)
183 { 166 {
184 // Extract all UX payloads to working folder. 167 // Extract all UX payloads to working folder.
185 hr = UserExperienceEnsureWorkingFolder(&pEngineState->cache, &pEngineState->userExperience.sczTempDirectory); 168 hr = BootstrapperApplicationEnsureWorkingFolder(&pEngineState->cache, &pEngineState->userExperience.sczTempDirectory);
186 ExitOnFailure(hr, "Failed to get unique temporary folder for bootstrapper application."); 169 ExitOnFailure(hr, "Failed to get unique temporary folder for bootstrapper application.");
187 170
188 hr = PayloadExtractUXContainer(&pEngineState->userExperience.payloads, &containerContext, pEngineState->userExperience.sczTempDirectory); 171 hr = PayloadExtractUXContainer(&pEngineState->userExperience.payloads, &containerContext, pEngineState->userExperience.sczTempDirectory);
@@ -297,7 +280,7 @@ extern "C" HRESULT CoreQueryRegistration(
297 } 280 }
298 281
299LExit: 282LExit:
300 ReleaseBuffer(pbBuffer); 283 ReleaseMem(pbBuffer);
301 284
302 return hr; 285 return hr;
303} 286}
@@ -324,7 +307,7 @@ extern "C" HRESULT CoreDetect(
324 ExitOnFailure(hr, "Failed to reset the dynamic registration variables during detect."); 307 ExitOnFailure(hr, "Failed to reset the dynamic registration variables during detect.");
325 308
326 fDetectBegan = TRUE; 309 fDetectBegan = TRUE;
327 hr = UserExperienceOnDetectBegin(&pEngineState->userExperience, pEngineState->registration.fCached, pEngineState->registration.detectedRegistrationType, pEngineState->packages.cPackages); 310 hr = BACallbackOnDetectBegin(&pEngineState->userExperience, pEngineState->registration.fCached, pEngineState->registration.detectedRegistrationType, pEngineState->packages.cPackages);
328 ExitOnRootFailure(hr, "UX aborted detect begin."); 311 ExitOnRootFailure(hr, "UX aborted detect begin.");
329 312
330 pEngineState->userExperience.hwndDetect = hwndParent; 313 pEngineState->userExperience.hwndDetect = hwndParent;
@@ -429,7 +412,7 @@ LExit:
429 412
430 if (fDetectBegan) 413 if (fDetectBegan)
431 { 414 {
432 UserExperienceOnDetectComplete(&pEngineState->userExperience, hr, pEngineState->registration.fEligibleForCleanup); 415 BACallbackOnDetectComplete(&pEngineState->userExperience, hr, pEngineState->registration.fEligibleForCleanup);
433 } 416 }
434 417
435 pEngineState->userExperience.hwndDetect = NULL; 418 pEngineState->userExperience.hwndDetect = NULL;
@@ -453,7 +436,7 @@ extern "C" HRESULT CorePlan(
453 LogId(REPORT_STANDARD, MSG_PLAN_BEGIN, pEngineState->packages.cPackages, LoggingBurnActionToString(action)); 436 LogId(REPORT_STANDARD, MSG_PLAN_BEGIN, pEngineState->packages.cPackages, LoggingBurnActionToString(action));
454 437
455 fPlanBegan = TRUE; 438 fPlanBegan = TRUE;
456 hr = UserExperienceOnPlanBegin(&pEngineState->userExperience, pEngineState->packages.cPackages); 439 hr = BACallbackOnPlanBegin(&pEngineState->userExperience, pEngineState->packages.cPackages);
457 ExitOnRootFailure(hr, "BA aborted plan begin."); 440 ExitOnRootFailure(hr, "BA aborted plan begin.");
458 441
459 if (!pEngineState->fDetected) 442 if (!pEngineState->fDetected)
@@ -583,7 +566,7 @@ LExit:
583 566
584 if (fPlanBegan) 567 if (fPlanBegan)
585 { 568 {
586 UserExperienceOnPlanComplete(&pEngineState->userExperience, hr); 569 BACallbackOnPlanComplete(&pEngineState->userExperience, hr);
587 } 570 }
588 571
589 LogId(REPORT_STANDARD, MSG_PLAN_COMPLETE, hr); 572 LogId(REPORT_STANDARD, MSG_PLAN_COMPLETE, hr);
@@ -674,13 +657,13 @@ extern "C" HRESULT CoreApply(
674 ++dwPhaseCount; 657 ++dwPhaseCount;
675 } 658 }
676 659
677 hr = UserExperienceOnApplyBegin(&pEngineState->userExperience, dwPhaseCount); 660 hr = BACallbackOnApplyBegin(&pEngineState->userExperience, dwPhaseCount);
678 ExitOnRootFailure(hr, "BA aborted apply begin."); 661 ExitOnRootFailure(hr, "BA aborted apply begin.");
679 662
680 if (pEngineState->plan.fDowngrade) 663 if (pEngineState->plan.fDowngrade)
681 { 664 {
682 hr = HRESULT_FROM_WIN32(ERROR_PRODUCT_VERSION); 665 hr = HRESULT_FROM_WIN32(ERROR_PRODUCT_VERSION);
683 UserExperienceOnApplyDowngrade(&pEngineState->userExperience, &hr); 666 BACallbackOnApplyDowngrade(&pEngineState->userExperience, &hr);
684 667
685 ExitFunction(); 668 ExitFunction();
686 } 669 }
@@ -767,7 +750,7 @@ extern "C" HRESULT CoreApply(
767 if (pEngineState->plan.cExecuteActions) 750 if (pEngineState->plan.cExecuteActions)
768 { 751 {
769 hr = ApplyExecute(pEngineState, &applyContext, &fSuspend, &restart); 752 hr = ApplyExecute(pEngineState, &applyContext, &fSuspend, &restart);
770 UserExperienceExecutePhaseComplete(&pEngineState->userExperience, hr); // signal that execute completed. 753 BootstrapperApplicationExecutePhaseComplete(&pEngineState->userExperience, hr); // signal that execute completed.
771 } 754 }
772 755
773 // Wait for cache thread to terminate, this should return immediately unless we're waiting for layout to complete. 756 // Wait for cache thread to terminate, this should return immediately unless we're waiting for layout to complete.
@@ -847,7 +830,7 @@ LExit:
847 830
848 if (fApplyBegan) 831 if (fApplyBegan)
849 { 832 {
850 UserExperienceOnApplyComplete(&pEngineState->userExperience, hr, restart, &applyCompleteAction); 833 BACallbackOnApplyComplete(&pEngineState->userExperience, hr, restart, &applyCompleteAction);
851 if (BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART == applyCompleteAction) 834 if (BOOTSTRAPPER_APPLYCOMPLETE_ACTION_RESTART == applyCompleteAction)
852 { 835 {
853 pEngineState->fRestart = TRUE; 836 pEngineState->fRestart = TRUE;
@@ -869,7 +852,7 @@ extern "C" HRESULT CoreLaunchApprovedExe(
869 852
870 LogId(REPORT_STANDARD, MSG_LAUNCH_APPROVED_EXE_BEGIN, pLaunchApprovedExe->sczId); 853 LogId(REPORT_STANDARD, MSG_LAUNCH_APPROVED_EXE_BEGIN, pLaunchApprovedExe->sczId);
871 854
872 hr = UserExperienceOnLaunchApprovedExeBegin(&pEngineState->userExperience); 855 hr = BACallbackOnLaunchApprovedExeBegin(&pEngineState->userExperience);
873 ExitOnRootFailure(hr, "BA aborted LaunchApprovedExe begin."); 856 ExitOnRootFailure(hr, "BA aborted LaunchApprovedExe begin.");
874 857
875 // Elevate. 858 // Elevate.
@@ -880,7 +863,7 @@ extern "C" HRESULT CoreLaunchApprovedExe(
880 hr = ElevationLaunchApprovedExe(pEngineState->companionConnection.hPipe, pLaunchApprovedExe, &dwProcessId); 863 hr = ElevationLaunchApprovedExe(pEngineState->companionConnection.hPipe, pLaunchApprovedExe, &dwProcessId);
881 864
882LExit: 865LExit:
883 UserExperienceOnLaunchApprovedExeComplete(&pEngineState->userExperience, hr, dwProcessId); 866 BACallbackOnLaunchApprovedExeComplete(&pEngineState->userExperience, hr, dwProcessId);
884 867
885 LogId(REPORT_STANDARD, MSG_LAUNCH_APPROVED_EXE_COMPLETE, hr, dwProcessId); 868 LogId(REPORT_STANDARD, MSG_LAUNCH_APPROVED_EXE_COMPLETE, hr, dwProcessId);
886 869
@@ -888,7 +871,7 @@ LExit:
888} 871}
889 872
890extern "C" void CoreQuit( 873extern "C" void CoreQuit(
891 __in BOOTSTRAPPER_ENGINE_CONTEXT* pEngineContext, 874 __in BAENGINE_CONTEXT* pEngineContext,
892 __in DWORD dwExitCode 875 __in DWORD dwExitCode
893 ) 876 )
894{ 877{
@@ -942,7 +925,7 @@ extern "C" HRESULT CoreSaveEngineState(
942 } 925 }
943 926
944LExit: 927LExit:
945 ReleaseBuffer(pbBuffer); 928 ReleaseMem(pbBuffer);
946 929
947 return hr; 930 return hr;
948} 931}
@@ -1087,95 +1070,6 @@ LExit:
1087 return hr; 1070 return hr;
1088} 1071}
1089 1072
1090extern "C" HRESULT CoreCreateCleanRoomCommandLine(
1091 __deref_inout_z LPWSTR* psczCommandLine,
1092 __in BURN_ENGINE_STATE* pEngineState,
1093 __in_z LPCWSTR wzCleanRoomBundlePath,
1094 __in_z LPCWSTR wzCurrentProcessPath,
1095 __inout HANDLE* phFileAttached,
1096 __inout HANDLE* phFileSelf
1097 )
1098{
1099 HRESULT hr = S_OK;
1100 BOOTSTRAPPER_COMMAND* pCommand = &pEngineState->command;
1101 BURN_ENGINE_COMMAND* pInternalCommand = &pEngineState->internalCommand;
1102
1103 // The clean room switch must always be at the front of the command line so
1104 // the EngineInCleanRoom function will operate correctly.
1105 hr = StrAllocFormatted(psczCommandLine, L"-%ls=\"%ls\"", BURN_COMMANDLINE_SWITCH_CLEAN_ROOM, wzCurrentProcessPath);
1106 ExitOnFailure(hr, "Failed to allocate parameters for unelevated process.");
1107
1108 // Send a file handle for the child Burn process to access the attached container.
1109 hr = CoreAppendFileHandleAttachedToCommandLine(pEngineState->section.hEngineFile, phFileAttached, psczCommandLine);
1110 ExitOnFailure(hr, "Failed to append %ls", BURN_COMMANDLINE_SWITCH_FILEHANDLE_ATTACHED);
1111
1112 // Grab a file handle for the child Burn process.
1113 hr = CoreAppendFileHandleSelfToCommandLine(wzCleanRoomBundlePath, phFileSelf, psczCommandLine, NULL);
1114 ExitOnFailure(hr, "Failed to append %ls", BURN_COMMANDLINE_SWITCH_FILEHANDLE_SELF);
1115
1116 hr = CoreAppendSplashScreenWindowToCommandLine(pCommand->hwndSplashScreen, psczCommandLine);
1117 ExitOnFailure(hr, "Failed to append %ls", BURN_COMMANDLINE_SWITCH_SPLASH_SCREEN);
1118
1119 if (pInternalCommand->sczLogFile)
1120 {
1121 LPCWSTR wzLogParameter = (BURN_LOGGING_ATTRIBUTE_EXTRADEBUG & pInternalCommand->dwLoggingAttributes) ? L"xlog" : L"log";
1122 hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls", wzLogParameter);
1123 ExitOnFailure(hr, "Failed to append logging switch.");
1124
1125 hr = AppAppendCommandLineArgument(psczCommandLine, pInternalCommand->sczLogFile);
1126 ExitOnFailure(hr, "Failed to append custom log path.");
1127 }
1128
1129 hr = AppendLayoutToCommandLine(pCommand->action, pCommand->wzLayoutDirectory, psczCommandLine);
1130 ExitOnFailure(hr, "Failed to append layout.");
1131
1132 switch (pInternalCommand->automaticUpdates)
1133 {
1134 case BURN_AU_PAUSE_ACTION_NONE:
1135 hr = StrAllocConcat(psczCommandLine, L" /noaupause", 0);
1136 ExitOnFailure(hr, "Failed to append /noaupause.");
1137 break;
1138 case BURN_AU_PAUSE_ACTION_IFELEVATED_NORESUME:
1139 hr = StrAllocConcat(psczCommandLine, L" /keepaupaused", 0);
1140 ExitOnFailure(hr, "Failed to append /keepaupaused.");
1141 break;
1142 }
1143
1144 // TODO: This should only be added if it was enabled from the command line.
1145 if (pInternalCommand->fDisableSystemRestore)
1146 {
1147 hr = StrAllocConcat(psczCommandLine, L" /disablesystemrestore", 0);
1148 ExitOnFailure(hr, "Failed to append /disablesystemrestore.");
1149 }
1150
1151 if (pInternalCommand->sczOriginalSource)
1152 {
1153 hr = StrAllocConcat(psczCommandLine, L" /originalsource", 0);
1154 ExitOnFailure(hr, "Failed to append /originalsource.");
1155
1156 hr = AppAppendCommandLineArgument(psczCommandLine, pInternalCommand->sczOriginalSource);
1157 ExitOnFailure(hr, "Failed to append original source.");
1158 }
1159
1160 if (pEngineState->embeddedConnection.sczName)
1161 {
1162 hr = StrAllocConcatFormatted(psczCommandLine, L" -%ls %ls %ls %u", BURN_COMMANDLINE_SWITCH_EMBEDDED, pEngineState->embeddedConnection.sczName, pEngineState->embeddedConnection.sczSecret, pEngineState->embeddedConnection.dwProcessId);
1163 ExitOnFailure(hr, "Failed to allocate embedded command.");
1164 }
1165
1166 if (pInternalCommand->sczIgnoreDependencies)
1167 {
1168 hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls=%ls", BURN_COMMANDLINE_SWITCH_IGNOREDEPENDENCIES, pInternalCommand->sczIgnoreDependencies);
1169 ExitOnFailure(hr, "Failed to append ignored dependencies to command-line.");
1170 }
1171
1172 hr = CoreRecreateCommandLine(psczCommandLine, pCommand->action, pInternalCommand, pCommand, pCommand->relationType, pCommand->fPassthrough);
1173 ExitOnFailure(hr, "Failed to recreate clean room command-line.");
1174
1175LExit:
1176 return hr;
1177}
1178
1179extern "C" HRESULT CoreCreatePassthroughBundleCommandLine( 1073extern "C" HRESULT CoreCreatePassthroughBundleCommandLine(
1180 __deref_inout_z LPWSTR* psczCommandLine, 1074 __deref_inout_z LPWSTR* psczCommandLine,
1181 __in BURN_ENGINE_COMMAND* pInternalCommand, 1075 __in BURN_ENGINE_COMMAND* pInternalCommand,
@@ -1201,9 +1095,6 @@ extern "C" HRESULT CoreCreateResumeCommandLine(
1201{ 1095{
1202 HRESULT hr = S_OK; 1096 HRESULT hr = S_OK;
1203 1097
1204 hr = StrAllocFormatted(psczCommandLine, L"/%ls", BURN_COMMANDLINE_SWITCH_CLEAN_ROOM);
1205 ExitOnFailure(hr, "Failed to alloc resume command-line.");
1206
1207 if (BURN_LOGGING_ATTRIBUTE_EXTRADEBUG & pPlan->pInternalCommand->dwLoggingAttributes) 1098 if (BURN_LOGGING_ATTRIBUTE_EXTRADEBUG & pPlan->pInternalCommand->dwLoggingAttributes)
1208 { 1099 {
1209 hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls=%ls", BURN_COMMANDLINE_SWITCH_LOG_MODE, L"x"); 1100 hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls=%ls", BURN_COMMANDLINE_SWITCH_LOG_MODE, L"x");
@@ -1694,40 +1585,6 @@ extern "C" HRESULT CoreParseCommandLine(
1694 1585
1695 i += 2; 1586 i += 2;
1696 } 1587 }
1697 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], lstrlenW(BURN_COMMANDLINE_SWITCH_CLEAN_ROOM), BURN_COMMANDLINE_SWITCH_CLEAN_ROOM, lstrlenW(BURN_COMMANDLINE_SWITCH_CLEAN_ROOM)))
1698 {
1699 if (0 != i)
1700 {
1701 fInvalidCommandLine = TRUE;
1702 TraceLog(E_INVALIDARG, "Clean room command-line switch must be first argument on command-line.");
1703 }
1704
1705 if (BURN_MODE_UNKNOWN == pInternalCommand->mode)
1706 {
1707 pInternalCommand->mode = BURN_MODE_NORMAL;
1708 }
1709 else
1710 {
1711 fInvalidCommandLine = TRUE;
1712 TraceLog(E_INVALIDARG, "Multiple mode command-line switches were provided.");
1713 }
1714
1715 // Get a pointer to the next character after the switch.
1716 LPCWSTR wzParam = &argv[i][1 + lstrlenW(BURN_COMMANDLINE_SWITCH_CLEAN_ROOM)];
1717 if (L'\0' != wzParam[0])
1718 {
1719 if (L'=' != wzParam[0])
1720 {
1721 fInvalidCommandLine = TRUE;
1722 TraceLog(E_INVALIDARG, "Invalid switch: %ls", argv[i]);
1723 }
1724 else if (L'\0' != wzParam[1])
1725 {
1726 hr = PathExpand(&pInternalCommand->sczSourceProcessPath, wzParam + 1, PATH_EXPAND_FULLPATH);
1727 ExitOnFailure(hr, "Failed to copy source process path.");
1728 }
1729 }
1730 }
1731 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT), BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT, lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT))) 1588 else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT), BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT, lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT)))
1732 { 1589 {
1733 // Get a pointer to the next character after the switch. 1590 // Get a pointer to the next character after the switch.
@@ -1762,13 +1619,7 @@ extern "C" HRESULT CoreParseCommandLine(
1762 switch (pInternalCommand->mode) 1619 switch (pInternalCommand->mode)
1763 { 1620 {
1764 case BURN_MODE_UNKNOWN: 1621 case BURN_MODE_UNKNOWN:
1765 // Set mode to UNTRUSTED to ensure multiple modes weren't specified.
1766 pInternalCommand->mode = BURN_MODE_UNTRUSTED;
1767 break;
1768 case BURN_MODE_NORMAL: 1622 case BURN_MODE_NORMAL:
1769 // The initialization code already assumes that the
1770 // clean room switch is at the beginning of the command line,
1771 // so it's safe to assume that the mode is NORMAL in the clean room.
1772 pInternalCommand->mode = BURN_MODE_EMBEDDED; 1623 pInternalCommand->mode = BURN_MODE_EMBEDDED;
1773 break; 1624 break;
1774 default: 1625 default:
@@ -2012,7 +1863,7 @@ extern "C" HRESULT CoreParseCommandLine(
2012 1863
2013 if (BURN_MODE_UNKNOWN == pInternalCommand->mode) 1864 if (BURN_MODE_UNKNOWN == pInternalCommand->mode)
2014 { 1865 {
2015 pInternalCommand->mode = BURN_MODE_UNTRUSTED; 1866 pInternalCommand->mode = BURN_MODE_NORMAL;
2016 } 1867 }
2017 1868
2018LExit: 1869LExit:
@@ -2132,18 +1983,6 @@ LExit:
2132 return hr; 1983 return hr;
2133} 1984}
2134 1985
2135extern "C" void DAPI CoreBootstrapperEngineActionUninitialize(
2136 __in BOOTSTRAPPER_ENGINE_ACTION* pAction
2137 )
2138{
2139 switch (pAction->dwMessage)
2140 {
2141 case WM_BURN_LAUNCH_APPROVED_EXE:
2142 ApprovedExesUninitializeLaunch(&pAction->launchApprovedExe);
2143 break;
2144 }
2145}
2146
2147// internal helper functions 1986// internal helper functions
2148 1987
2149static HRESULT AppendEscapedArgumentToCommandLine( 1988static HRESULT AppendEscapedArgumentToCommandLine(
@@ -2219,30 +2058,6 @@ LExit:
2219 return hr; 2058 return hr;
2220} 2059}
2221 2060
2222static HRESULT AppendLayoutToCommandLine(
2223 __in BOOTSTRAPPER_ACTION action,
2224 __in_z LPCWSTR wzLayoutDirectory,
2225 __deref_inout_z LPWSTR* psczCommandLine
2226 )
2227{
2228 HRESULT hr = S_OK;
2229
2230 if (BOOTSTRAPPER_ACTION_LAYOUT == action || wzLayoutDirectory)
2231 {
2232 hr = StrAllocConcat(psczCommandLine, L" /layout", 0);
2233 ExitOnFailure(hr, "Failed to append layout switch.");
2234
2235 if (wzLayoutDirectory)
2236 {
2237 hr = AppAppendCommandLineArgument(psczCommandLine, wzLayoutDirectory);
2238 ExitOnFailure(hr, "Failed to append layout directory.");
2239 }
2240 }
2241
2242LExit:
2243 return hr;
2244}
2245
2246static HRESULT GetSanitizedCommandLine( 2061static HRESULT GetSanitizedCommandLine(
2247 __in BURN_ENGINE_COMMAND* pInternalCommand, 2062 __in BURN_ENGINE_COMMAND* pInternalCommand,
2248 __in BOOTSTRAPPER_COMMAND* pCommand, 2063 __in BOOTSTRAPPER_COMMAND* pCommand,
@@ -2347,7 +2162,7 @@ static HRESULT DetectPackage(
2347 BOOL fBegan = FALSE; 2162 BOOL fBegan = FALSE;
2348 2163
2349 fBegan = TRUE; 2164 fBegan = TRUE;
2350 hr = UserExperienceOnDetectPackageBegin(&pEngineState->userExperience, pPackage->sczId); 2165 hr = BACallbackOnDetectPackageBegin(&pEngineState->userExperience, pPackage->sczId);
2351 ExitOnRootFailure(hr, "BA aborted detect package begin."); 2166 ExitOnRootFailure(hr, "BA aborted detect package begin.");
2352 2167
2353 // Detect the cache state of the package. 2168 // Detect the cache state of the package.
@@ -2389,7 +2204,7 @@ LExit:
2389 2204
2390 if (fBegan) 2205 if (fBegan)
2391 { 2206 {
2392 UserExperienceOnDetectPackageComplete(&pEngineState->userExperience, pPackage->sczId, hr, pPackage->currentState, pPackage->fCached); 2207 BACallbackOnDetectPackageComplete(&pEngineState->userExperience, pPackage->sczId, hr, pPackage->currentState, pPackage->fCached);
2393 } 2208 }
2394 2209
2395 return hr; 2210 return hr;
@@ -2465,7 +2280,7 @@ static DWORD WINAPI CacheThreadProc(
2465 hr = ApplyCache(pEngineState->section.hSourceEngineFile, &pEngineState->userExperience, &pEngineState->variables, &pEngineState->plan, pEngineState->companionConnection.hCachePipe, pContext->pApplyContext); 2280 hr = ApplyCache(pEngineState->section.hSourceEngineFile, &pEngineState->userExperience, &pEngineState->variables, &pEngineState->plan, pEngineState->companionConnection.hCachePipe, pContext->pApplyContext);
2466 2281
2467LExit: 2282LExit:
2468 UserExperienceExecutePhaseComplete(&pEngineState->userExperience, hr); // signal that cache completed. 2283 BootstrapperApplicationExecutePhaseComplete(&pEngineState->userExperience, hr); // signal that cache completed.
2469 2284
2470 if (fComInitialized) 2285 if (fComInitialized)
2471 { 2286 {