From cdb457d593cb09a88e73cdcd9538a66e62610cf1 Mon Sep 17 00:00:00 2001 From: Bob Arnson Date: Thu, 9 Feb 2023 17:17:58 -0500 Subject: Add `InstallerInformationalVersion`. Gets "full" version (with commit id). Fixes https://github.com/wixtoolset/issues/issues/7200. --- src/burn/engine/variable.cpp | 30 +++++++++++++++++++++++++++-- src/burn/engine/variable.h | 1 + src/burn/test/BurnUnitTest/VariableTest.cpp | 3 +++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/burn/engine/variable.cpp b/src/burn/engine/variable.cpp index 9b6fecaf..36dc92e0 100644 --- a/src/burn/engine/variable.cpp +++ b/src/burn/engine/variable.cpp @@ -193,6 +193,10 @@ static HRESULT InitializeVariableInstallerVersion( __in DWORD_PTR dwpData, __inout BURN_VARIANT* pValue ); +static HRESULT InitializeVariableInstallerInformationalVersion( + __in DWORD_PTR dwpData, + __inout BURN_VARIANT* pValue +); static HRESULT InitializeVariableVersion( __in DWORD_PTR dwpData, __inout BURN_VARIANT* pValue @@ -244,6 +248,7 @@ extern "C" HRESULT VariableInitialize( {L"FontsFolder", InitializeVariableCsidlFolder, CSIDL_FONTS}, {VARIABLE_INSTALLERNAME, InitializeVariableInstallerName, 0}, {VARIABLE_INSTALLERVERSION, InitializeVariableInstallerVersion, 0}, + {VARIABLE_INSTALLERINFORMATIONALVERSION, InitializeVariableInstallerInformationalVersion, 0}, {L"LocalAppDataFolder", InitializeVariableCsidlFolder, CSIDL_LOCAL_APPDATA}, {VARIABLE_LOGONUSER, InitializeVariableLogonUser, 0}, {L"MyPicturesFolder", InitializeVariableCsidlFolder, CSIDL_MYPICTURES}, @@ -2309,7 +2314,7 @@ LExit: #endif static HRESULT InitializeVariable6432Folder( - __in DWORD_PTR dwpData, + __in DWORD_PTR dwpData, __inout BURN_VARIANT* pValue ) { @@ -2405,7 +2410,28 @@ static HRESULT InitializeVariableInstallerVersion( LPWSTR sczVersion = NULL; hr = StrAllocStringAnsi(&sczVersion, szVerMajorMinorBuild, 0, CP_ACP); - ExitOnFailure(hr, "Failed to copy the engine version."); + ExitOnFailure(hr, "Failed to copy the engine version: %hs", szVerMajorMinorBuild); + + // set value + hr = BVariantSetString(pValue, sczVersion, 0, FALSE); + ExitOnFailure(hr, "Failed to set variant value."); + +LExit: + ReleaseStr(sczVersion); + + return hr; +} + +static HRESULT InitializeVariableInstallerInformationalVersion( + __in DWORD_PTR /*dwpData*/, + __inout BURN_VARIANT* pValue + ) +{ + HRESULT hr = S_OK; + LPWSTR sczVersion = NULL; + + hr = StrAllocStringAnsi(&sczVersion, szInformationalVersion, 0, CP_ACP); + ExitOnFailure(hr, "Failed to copy the engine informational version: %hs", szInformationalVersion); // set value hr = BVariantSetString(pValue, sczVersion, 0, FALSE); diff --git a/src/burn/engine/variable.h b/src/burn/engine/variable.h index 309d7ab9..022683b4 100644 --- a/src/burn/engine/variable.h +++ b/src/burn/engine/variable.h @@ -13,6 +13,7 @@ const LPCWSTR VARIABLE_DATE = L"Date"; const LPCWSTR VARIABLE_LOGONUSER = L"LogonUser"; const LPCWSTR VARIABLE_INSTALLERNAME = L"InstallerName"; const LPCWSTR VARIABLE_INSTALLERVERSION = L"InstallerVersion"; +const LPCWSTR VARIABLE_INSTALLERINFORMATIONALVERSION = L"InstallerInformationalVersion"; const LPCWSTR VARIABLE_REBOOTPENDING = L"RebootPending"; diff --git a/src/burn/test/BurnUnitTest/VariableTest.cpp b/src/burn/test/BurnUnitTest/VariableTest.cpp index d07e0304..6469849d 100644 --- a/src/burn/test/BurnUnitTest/VariableTest.cpp +++ b/src/burn/test/BurnUnitTest/VariableTest.cpp @@ -605,6 +605,9 @@ namespace Bootstrapper VariableGetStringHelper(&variables, L"CommonFiles64Folder"); VariableGetStringHelper(&variables, L"System64Folder"); } + + Assert::Equal(wzVerMajorMinorBuild, VariableGetVersionHelper(&variables, L"InstallerVersion")); + Assert::Equal(wzInformationalVersion, VariableGetVersionHelper(&variables, L"InstallerInformationalVersion")); } finally { -- cgit v1.2.3-55-g6feb