@joebigelow / wix-1 / commits / cdb457d5

Add `InstallerInformationalVersion`.

Gets "full" version (with commit id). Fixes https://github.com/wixtoolset/issues/issues/7200.

Bob Arnson committed Feb 9, 2023 at 17:17 UTC cdb457d593cb09a88e73cdcd9538a66e62610cf1
3 files changed +32 -2
src/burn/engine/variable.cpp
+28 -2
@@ -193,6 +193,10 @@ static HRESULT InitializeVariableInstallerVersion(
193 __in DWORD_PTR dwpData,
194 __inout BURN_VARIANT* pValue
195 );
196 +static HRESULT InitializeVariableInstallerInformationalVersion(
197 + __in DWORD_PTR dwpData,
198 + __inout BURN_VARIANT* pValue
199 +);
200 static HRESULT InitializeVariableVersion(
201 __in DWORD_PTR dwpData,
202 __inout BURN_VARIANT* pValue
@@ -244,6 +248,7 @@ extern "C" HRESULT VariableInitialize(
248 {L"FontsFolder", InitializeVariableCsidlFolder, CSIDL_FONTS},
249 {VARIABLE_INSTALLERNAME, InitializeVariableInstallerName, 0},
250 {VARIABLE_INSTALLERVERSION, InitializeVariableInstallerVersion, 0},
251 + {VARIABLE_INSTALLERINFORMATIONALVERSION, InitializeVariableInstallerInformationalVersion, 0},
252 {L"LocalAppDataFolder", InitializeVariableCsidlFolder, CSIDL_LOCAL_APPDATA},
253 {VARIABLE_LOGONUSER, InitializeVariableLogonUser, 0},
254 {L"MyPicturesFolder", InitializeVariableCsidlFolder, CSIDL_MYPICTURES},
@@ -2309,7 +2314,7 @@ LExit:
2314 #endif
2315
2316 static HRESULT InitializeVariable6432Folder(
2312 - __in DWORD_PTR dwpData,
2317 + __in DWORD_PTR dwpData,
2318 __inout BURN_VARIANT* pValue
2319 )
2320 {
@@ -2405,7 +2410,28 @@ static HRESULT InitializeVariableInstallerVersion(
2410 LPWSTR sczVersion = NULL;
2411
2412 hr = StrAllocStringAnsi(&sczVersion, szVerMajorMinorBuild, 0, CP_ACP);
2408 - ExitOnFailure(hr, "Failed to copy the engine version.");
2413 + ExitOnFailure(hr, "Failed to copy the engine version: %hs", szVerMajorMinorBuild);
2414 +
2415 + // set value
2416 + hr = BVariantSetString(pValue, sczVersion, 0, FALSE);
2417 + ExitOnFailure(hr, "Failed to set variant value.");
2418 +
2419 +LExit:
2420 + ReleaseStr(sczVersion);
2421 +
2422 + return hr;
2423 +}
2424 +
2425 +static HRESULT InitializeVariableInstallerInformationalVersion(
2426 + __in DWORD_PTR /*dwpData*/,
2427 + __inout BURN_VARIANT* pValue
2428 + )
2429 +{
2430 + HRESULT hr = S_OK;
2431 + LPWSTR sczVersion = NULL;
2432 +
2433 + hr = StrAllocStringAnsi(&sczVersion, szInformationalVersion, 0, CP_ACP);
2434 + ExitOnFailure(hr, "Failed to copy the engine informational version: %hs", szInformationalVersion);
2435
2436 // set value
2437 hr = BVariantSetString(pValue, sczVersion, 0, FALSE);
src/burn/engine/variable.h
+1
@@ -13,6 +13,7 @@ const LPCWSTR VARIABLE_DATE = L"Date";
13 const LPCWSTR VARIABLE_LOGONUSER = L"LogonUser";
14 const LPCWSTR VARIABLE_INSTALLERNAME = L"InstallerName";
15 const LPCWSTR VARIABLE_INSTALLERVERSION = L"InstallerVersion";
16 +const LPCWSTR VARIABLE_INSTALLERINFORMATIONALVERSION = L"InstallerInformationalVersion";
17 const LPCWSTR VARIABLE_REBOOTPENDING = L"RebootPending";
18
19
src/burn/test/BurnUnitTest/VariableTest.cpp
+3
@@ -605,6 +605,9 @@ namespace Bootstrapper
605 VariableGetStringHelper(&variables, L"CommonFiles64Folder");
606 VariableGetStringHelper(&variables, L"System64Folder");
607 }
608 +
609 + Assert::Equal<String^>(wzVerMajorMinorBuild, VariableGetVersionHelper(&variables, L"InstallerVersion"));
610 + Assert::Equal<String^>(wzInformationalVersion, VariableGetVersionHelper(&variables, L"InstallerInformationalVersion"));
611 }
612 finally
613 {