From 495370ff9311d406da9c043cd208ce836a0303ff Mon Sep 17 00:00:00 2001 From: Eric StJohn Date: Mon, 30 Aug 2021 15:26:42 -0700 Subject: Add NativeMachine to Burn and WIX_NATIVE_MACHINE to UtilExtension --- src/burn/engine/variable.cpp | 25 +++++++++++++++++++++++++ src/burn/test/BurnUnitTest/VariableTest.cpp | 1 + 2 files changed, 26 insertions(+) (limited to 'src/burn') diff --git a/src/burn/engine/variable.cpp b/src/burn/engine/variable.cpp index e7391a9f..e81704ce 100644 --- a/src/burn/engine/variable.cpp +++ b/src/burn/engine/variable.cpp @@ -97,6 +97,10 @@ static HRESULT InitializeVariableVersionNT( __in DWORD_PTR dwpData, __inout BURN_VARIANT* pValue ); +static HRESULT InitializeVariableNativeMachine( + __in DWORD_PTR dwpData, + __inout BURN_VARIANT* pValue + ); static HRESULT InitializeVariableOsInfo( __in DWORD_PTR dwpData, __inout BURN_VARIANT* pValue @@ -223,6 +227,7 @@ extern "C" HRESULT VariableInitialize( {L"LocalAppDataFolder", InitializeVariableCsidlFolder, CSIDL_LOCAL_APPDATA}, {VARIABLE_LOGONUSER, InitializeVariableLogonUser, 0}, {L"MyPicturesFolder", InitializeVariableCsidlFolder, CSIDL_MYPICTURES}, + {L"NativeMachine", InitializeVariableNativeMachine, 0}, {L"NTProductType", InitializeVariableOsInfo, OS_INFO_VARIABLE_NTProductType}, {L"NTSuiteBackOffice", InitializeVariableOsInfo, OS_INFO_VARIABLE_NTSuiteBackOffice}, {L"NTSuiteDataCenter", InitializeVariableOsInfo, OS_INFO_VARIABLE_NTSuiteDataCenter}, @@ -1827,6 +1832,26 @@ LExit: return hr; } +static HRESULT InitializeVariableNativeMachine( + __in DWORD_PTR dwpData, + __inout BURN_VARIANT* pValue + ) +{ + UNREFERENCED_PARAMETER(dwpData); + + HRESULT hr = S_OK; + USHORT usNativeMachine = IMAGE_FILE_MACHINE_UNKNOWN; + + hr = ProcNativeMachine(::GetCurrentProcess(), &usNativeMachine); + ExitOnFailure(hr, "Failed to get native machine value."); + + hr = BVariantSetNumeric(pValue, usNativeMachine); + ExitOnFailure(hr, "Failed to set variant value."); + +LExit: + return hr; +} + static HRESULT InitializeVariableComputerName( __in DWORD_PTR dwpData, __inout BURN_VARIANT* pValue diff --git a/src/burn/test/BurnUnitTest/VariableTest.cpp b/src/burn/test/BurnUnitTest/VariableTest.cpp index 259fb468..2ae829dc 100644 --- a/src/burn/test/BurnUnitTest/VariableTest.cpp +++ b/src/burn/test/BurnUnitTest/VariableTest.cpp @@ -477,6 +477,7 @@ namespace Bootstrapper Assert::Equal(E_INVALIDARG, hr); Assert::False(EvaluateConditionHelper(&variables, L"VersionNT = \"VAL\"")); + VariableGetNumericHelper(&variables, L"NativeMachine"); VariableGetNumericHelper(&variables, L"NTProductType"); VariableGetNumericHelper(&variables, L"NTSuiteBackOffice"); VariableGetNumericHelper(&variables, L"NTSuiteDataCenter"); -- cgit v1.2.3-55-g6feb