From d32f770ca05748df9e356444c7e617d5eeedb60c Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Tue, 13 Apr 2021 18:16:55 -0700 Subject: Allow BA to update feed source Fixes wixtoolset/issues#5568 --- src/engine/externalengine.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/engine/externalengine.cpp') diff --git a/src/engine/externalengine.cpp b/src/engine/externalengine.cpp index d881544c..fffd96bf 100644 --- a/src/engine/externalengine.cpp +++ b/src/engine/externalengine.cpp @@ -733,6 +733,38 @@ LExit: return hr; } +HRESULT ExternalEngineSetUpdateSource( + __in BURN_ENGINE_STATE* pEngineState, + __in_z LPCWSTR wzUrl + ) +{ + HRESULT hr = S_OK; + BOOL fLeaveCriticalSection = FALSE; + + ::EnterCriticalSection(&pEngineState->userExperience.csEngineActive); + fLeaveCriticalSection = TRUE; + hr = UserExperienceEnsureEngineInactive(&pEngineState->userExperience); + ExitOnFailure(hr, "Engine is active, cannot change engine state."); + + if (wzUrl && *wzUrl) + { + hr = StrAllocString(&pEngineState->update.sczUpdateSource, wzUrl, 0); + ExitOnFailure(hr, "Failed to set feed download URL."); + } + else // no URL provided means clear out the whole download source. + { + ReleaseNullStr(pEngineState->update.sczUpdateSource); + } + +LExit: + if (fLeaveCriticalSection) + { + ::LeaveCriticalSection(&pEngineState->userExperience.csEngineActive); + } + + return hr; +} + // TODO: callers need to provide the original size (at the time of first public release) of the struct instead of the current size. HRESULT WINAPI ExternalEngineValidateMessageParameter( __in_opt const LPVOID pv, -- cgit v1.2.3-55-g6feb