From e879388d96157db6a6e7b2ee79871ef7ebbd3015 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Sun, 18 Oct 2020 14:10:20 -0500 Subject: Add CompareVersions engine method. --- src/engine/EngineForApplication.cpp | 19 +++++++++++++++++++ src/engine/EngineForExtension.cpp | 19 +++++++++++++++++++ src/engine/burnextension.cpp | 3 ++- src/engine/userexperience.cpp | 2 +- 4 files changed, 41 insertions(+), 2 deletions(-) (limited to 'src/engine') diff --git a/src/engine/EngineForApplication.cpp b/src/engine/EngineForApplication.cpp index d034c2bf..49ffe700 100644 --- a/src/engine/EngineForApplication.cpp +++ b/src/engine/EngineForApplication.cpp @@ -616,6 +616,22 @@ static HRESULT BAEngineCloseSplashScreen( return S_OK; } +static HRESULT BAEngineCompareVersions( + __in BOOTSTRAPPER_ENGINE_CONTEXT* /*pContext*/, + __in const BAENGINE_COMPAREVERSIONS_ARGS* pArgs, + __in BAENGINE_COMPAREVERSIONS_RESULTS* pResults + ) +{ + HRESULT hr = S_OK; + LPCWSTR wzVersion1 = pArgs->wzVersion1; + LPCWSTR wzVersion2 = pArgs->wzVersion2; + int* pnResult = &pResults->nResult; + + hr = VerCompareStringVersions(wzVersion1, wzVersion2, FALSE, pnResult); + + return hr; +} + static HRESULT BAEngineDetect( __in BOOTSTRAPPER_ENGINE_CONTEXT* pContext, __in BAENGINE_DETECT_ARGS* pArgs, @@ -861,6 +877,9 @@ HRESULT WINAPI EngineForApplicationProc( case BOOTSTRAPPER_ENGINE_MESSAGE_LAUNCHAPPROVEDEXE: hr = BAEngineLaunchApprovedExe(pContext, reinterpret_cast(pvArgs), reinterpret_cast(pvResults)); break; + case BOOTSTRAPPER_ENGINE_MESSAGE_COMPAREVERSIONS: + hr = BAEngineCompareVersions(pContext, reinterpret_cast(pvArgs), reinterpret_cast(pvResults)); + break; default: hr = E_NOTIMPL; break; diff --git a/src/engine/EngineForExtension.cpp b/src/engine/EngineForExtension.cpp index 6ec80a0f..c165e2c2 100644 --- a/src/engine/EngineForExtension.cpp +++ b/src/engine/EngineForExtension.cpp @@ -291,6 +291,22 @@ LExit: return hr; } +static HRESULT BEEngineCompareVersions( + __in BURN_EXTENSION_ENGINE_CONTEXT* /*pContext*/, + __in const BUNDLE_EXTENSION_ENGINE_COMPAREVERSIONS_ARGS* pArgs, + __in BUNDLE_EXTENSION_ENGINE_COMPAREVERSIONS_RESULTS* pResults + ) +{ + HRESULT hr = S_OK; + LPCWSTR wzVersion1 = pArgs->wzVersion1; + LPCWSTR wzVersion2 = pArgs->wzVersion2; + int* pnResult = &pResults->nResult; + + hr = VerCompareStringVersions(wzVersion1, wzVersion2, FALSE, pnResult); + + return hr; +} + HRESULT WINAPI EngineForExtensionProc( __in BUNDLE_EXTENSION_ENGINE_MESSAGE message, __in const LPVOID pvArgs, @@ -338,6 +354,9 @@ HRESULT WINAPI EngineForExtensionProc( case BUNDLE_EXTENSION_ENGINE_MESSAGE_SETVARIABLEVERSION: hr = BEEngineSetVariableVersion(pContext, reinterpret_cast(pvArgs), reinterpret_cast(pvResults)); break; + case BUNDLE_EXTENSION_ENGINE_MESSAGE_COMPAREVERSIONS: + hr = BEEngineCompareVersions(pContext, reinterpret_cast(pvArgs), reinterpret_cast(pvResults)); + break; default: hr = E_NOTIMPL; break; diff --git a/src/engine/burnextension.cpp b/src/engine/burnextension.cpp index 59f84eca..157b082f 100644 --- a/src/engine/burnextension.cpp +++ b/src/engine/burnextension.cpp @@ -126,9 +126,10 @@ EXTERN_C HRESULT BurnExtensionLoad( args.cbSize = sizeof(BUNDLE_EXTENSION_CREATE_ARGS); args.pfnBundleExtensionEngineProc = EngineForExtensionProc; args.pvBundleExtensionEngineProcContext = pEngineContext; - args.qwEngineAPIVersion = MAKEQWORDVERSION(0, 0, 0, 1); // TODO: need to decide whether to keep this, and if so when to update it. + args.qwEngineAPIVersion = MAKEQWORDVERSION(2020, 8, 31, 0); args.wzBootstrapperWorkingFolder = pEngineContext->pEngineState->userExperience.sczTempDirectory; args.wzBundleExtensionDataPath = sczBundleExtensionDataPath; + args.wzExtensionId = pExtension->sczId; results.cbSize = sizeof(BUNDLE_EXTENSION_CREATE_RESULTS); diff --git a/src/engine/userexperience.cpp b/src/engine/userexperience.cpp index 6ab28cde..5f18cdbc 100644 --- a/src/engine/userexperience.cpp +++ b/src/engine/userexperience.cpp @@ -97,7 +97,7 @@ extern "C" HRESULT UserExperienceLoad( args.pCommand = pCommand; args.pfnBootstrapperEngineProc = EngineForApplicationProc; args.pvBootstrapperEngineProcContext = pEngineContext; - args.qwEngineAPIVersion = MAKEQWORDVERSION(2020, 5, 14, 0); + args.qwEngineAPIVersion = MAKEQWORDVERSION(2020, 8, 31, 0); results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); -- cgit v1.2.3-55-g6feb