aboutsummaryrefslogtreecommitdiff
path: root/src/burn
diff options
context:
space:
mode:
authorBob Arnson <bob@firegiant.com>2023-02-09 17:17:58 -0500
committerBob Arnson <github@bobs.org>2023-02-09 20:45:37 -0500
commitcdb457d593cb09a88e73cdcd9538a66e62610cf1 (patch)
tree530f1f38c1b6c25826014c8c656fafc32fa1ff1a /src/burn
parent67994fcad0cc060ae750070ab58319991a9fd8a9 (diff)
downloadwix-cdb457d593cb09a88e73cdcd9538a66e62610cf1.tar.gz
wix-cdb457d593cb09a88e73cdcd9538a66e62610cf1.tar.bz2
wix-cdb457d593cb09a88e73cdcd9538a66e62610cf1.zip
Add `InstallerInformationalVersion`.
Gets "full" version (with commit id). Fixes https://github.com/wixtoolset/issues/issues/7200.
Diffstat (limited to 'src/burn')
-rw-r--r--src/burn/engine/variable.cpp30
-rw-r--r--src/burn/engine/variable.h1
-rw-r--r--src/burn/test/BurnUnitTest/VariableTest.cpp3
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(
193 __in DWORD_PTR dwpData, 193 __in DWORD_PTR dwpData,
194 __inout BURN_VARIANT* pValue 194 __inout BURN_VARIANT* pValue
195 ); 195 );
196static HRESULT InitializeVariableInstallerInformationalVersion(
197 __in DWORD_PTR dwpData,
198 __inout BURN_VARIANT* pValue
199);
196static HRESULT InitializeVariableVersion( 200static HRESULT InitializeVariableVersion(
197 __in DWORD_PTR dwpData, 201 __in DWORD_PTR dwpData,
198 __inout BURN_VARIANT* pValue 202 __inout BURN_VARIANT* pValue
@@ -244,6 +248,7 @@ extern "C" HRESULT VariableInitialize(
244 {L"FontsFolder", InitializeVariableCsidlFolder, CSIDL_FONTS}, 248 {L"FontsFolder", InitializeVariableCsidlFolder, CSIDL_FONTS},
245 {VARIABLE_INSTALLERNAME, InitializeVariableInstallerName, 0}, 249 {VARIABLE_INSTALLERNAME, InitializeVariableInstallerName, 0},
246 {VARIABLE_INSTALLERVERSION, InitializeVariableInstallerVersion, 0}, 250 {VARIABLE_INSTALLERVERSION, InitializeVariableInstallerVersion, 0},
251 {VARIABLE_INSTALLERINFORMATIONALVERSION, InitializeVariableInstallerInformationalVersion, 0},
247 {L"LocalAppDataFolder", InitializeVariableCsidlFolder, CSIDL_LOCAL_APPDATA}, 252 {L"LocalAppDataFolder", InitializeVariableCsidlFolder, CSIDL_LOCAL_APPDATA},
248 {VARIABLE_LOGONUSER, InitializeVariableLogonUser, 0}, 253 {VARIABLE_LOGONUSER, InitializeVariableLogonUser, 0},
249 {L"MyPicturesFolder", InitializeVariableCsidlFolder, CSIDL_MYPICTURES}, 254 {L"MyPicturesFolder", InitializeVariableCsidlFolder, CSIDL_MYPICTURES},
@@ -2309,7 +2314,7 @@ LExit:
2309#endif 2314#endif
2310 2315
2311static HRESULT InitializeVariable6432Folder( 2316static HRESULT InitializeVariable6432Folder(
2312 __in DWORD_PTR dwpData, 2317 __in DWORD_PTR dwpData,
2313 __inout BURN_VARIANT* pValue 2318 __inout BURN_VARIANT* pValue
2314 ) 2319 )
2315{ 2320{
@@ -2405,7 +2410,28 @@ static HRESULT InitializeVariableInstallerVersion(
2405 LPWSTR sczVersion = NULL; 2410 LPWSTR sczVersion = NULL;
2406 2411
2407 hr = StrAllocStringAnsi(&sczVersion, szVerMajorMinorBuild, 0, CP_ACP); 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
2419LExit:
2420 ReleaseStr(sczVersion);
2421
2422 return hr;
2423}
2424
2425static 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);
2409 2435
2410 // set value 2436 // set value
2411 hr = BVariantSetString(pValue, sczVersion, 0, FALSE); 2437 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";
13const LPCWSTR VARIABLE_LOGONUSER = L"LogonUser"; 13const LPCWSTR VARIABLE_LOGONUSER = L"LogonUser";
14const LPCWSTR VARIABLE_INSTALLERNAME = L"InstallerName"; 14const LPCWSTR VARIABLE_INSTALLERNAME = L"InstallerName";
15const LPCWSTR VARIABLE_INSTALLERVERSION = L"InstallerVersion"; 15const LPCWSTR VARIABLE_INSTALLERVERSION = L"InstallerVersion";
16const LPCWSTR VARIABLE_INSTALLERINFORMATIONALVERSION = L"InstallerInformationalVersion";
16const LPCWSTR VARIABLE_REBOOTPENDING = L"RebootPending"; 17const LPCWSTR VARIABLE_REBOOTPENDING = L"RebootPending";
17 18
18 19
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
605 VariableGetStringHelper(&variables, L"CommonFiles64Folder"); 605 VariableGetStringHelper(&variables, L"CommonFiles64Folder");
606 VariableGetStringHelper(&variables, L"System64Folder"); 606 VariableGetStringHelper(&variables, L"System64Folder");
607 } 607 }
608
609 Assert::Equal<String^>(wzVerMajorMinorBuild, VariableGetVersionHelper(&variables, L"InstallerVersion"));
610 Assert::Equal<String^>(wzInformationalVersion, VariableGetVersionHelper(&variables, L"InstallerInformationalVersion"));
608 } 611 }
609 finally 612 finally
610 { 613 {