diff options
Diffstat (limited to 'src/ext/Bal/dnchost/dnchost.cpp')
-rw-r--r-- | src/ext/Bal/dnchost/dnchost.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ext/Bal/dnchost/dnchost.cpp b/src/ext/Bal/dnchost/dnchost.cpp index 6c066f43..36970f83 100644 --- a/src/ext/Bal/dnchost/dnchost.cpp +++ b/src/ext/Bal/dnchost/dnchost.cpp | |||
@@ -76,6 +76,16 @@ extern "C" HRESULT WINAPI BootstrapperApplicationCreate( | |||
76 | vstate.fInitialized = TRUE; | 76 | vstate.fInitialized = TRUE; |
77 | } | 77 | } |
78 | 78 | ||
79 | if (vstate.prereqData.fAlwaysInstallPrereqs && !vstate.prereqData.fCompleted) | ||
80 | { | ||
81 | BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Loading prerequisite bootstrapper application since it's configured to always run before loading the runtime."); | ||
82 | |||
83 | hr = CreatePrerequisiteBA(&vstate, pEngine, pArgs, pResults); | ||
84 | BalExitOnFailure(hr, "Failed to create the pre-requisite bootstrapper application."); | ||
85 | |||
86 | ExitFunction(); | ||
87 | } | ||
88 | |||
79 | if (!vstate.fInitializedRuntime) | 89 | if (!vstate.fInitializedRuntime) |
80 | { | 90 | { |
81 | hr = LoadRuntime(&vstate); | 91 | hr = LoadRuntime(&vstate); |
@@ -214,6 +224,15 @@ static HRESULT LoadDncConfiguration( | |||
214 | hr = StrAllocConcat(&pState->sczBaFactoryRuntimeConfigPath, L".runtimeconfig.json", 0); | 224 | hr = StrAllocConcat(&pState->sczBaFactoryRuntimeConfigPath, L".runtimeconfig.json", 0); |
215 | BalExitOnFailure(hr, "Failed to concat extension to runtime config path."); | 225 | BalExitOnFailure(hr, "Failed to concat extension to runtime config path."); |
216 | 226 | ||
227 | hr = XmlSelectSingleNode(pixdManifest, L"/BootstrapperApplicationData/WixMbaPrereqOptions", &pixnHost); | ||
228 | BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to find WixMbaPrereqOptions element in bootstrapper application config."); | ||
229 | |||
230 | if (fXmlFound) | ||
231 | { | ||
232 | hr = XmlGetAttributeNumber(pixnHost, L"AlwaysInstallPrereqs", reinterpret_cast<DWORD*>(&pState->prereqData.fAlwaysInstallPrereqs)); | ||
233 | BalExitOnOptionalXmlQueryFailure(hr, fXmlFound, "Failed to get AlwaysInstallPrereqs value."); | ||
234 | } | ||
235 | |||
217 | pState->type = DNCHOSTTYPE_FDD; | 236 | pState->type = DNCHOSTTYPE_FDD; |
218 | 237 | ||
219 | hr = XmlSelectSingleNode(pixdManifest, L"/BootstrapperApplicationData/WixDncOptions", &pixnHost); | 238 | hr = XmlSelectSingleNode(pixdManifest, L"/BootstrapperApplicationData/WixDncOptions", &pixnHost); |