From ca3bf7968865be1cb80e9d63e7cc177f92469e2f Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Wed, 14 Sep 2022 11:02:20 -0500 Subject: Don't search for 64-bit bundles on 32-bit OS. Fixes 6849 --- src/libs/dutil/WixToolset.DUtil/butil.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/libs') diff --git a/src/libs/dutil/WixToolset.DUtil/butil.cpp b/src/libs/dutil/WixToolset.DUtil/butil.cpp index 47f206ea..4b6cd02a 100644 --- a/src/libs/dutil/WixToolset.DUtil/butil.cpp +++ b/src/libs/dutil/WixToolset.DUtil/butil.cpp @@ -361,6 +361,12 @@ DAPI_(HRESULT) BundleQueryRelatedBundles( { HRESULT hr = S_OK; BUNDLE_QUERY_CONTEXT queryContext = { }; + BOOL fSearch64 = TRUE; + +#if !defined(_WIN64) + // On 32-bit OS's, the requested bitness of the key is ignored so need to avoid searching the same place twice. + ProcWow64(::GetCurrentProcess(), &fSearch64); +#endif queryContext.installContext = installContext; queryContext.rgwzDetectCodes = rgwzDetectCodes; @@ -379,10 +385,13 @@ DAPI_(HRESULT) BundleQueryRelatedBundles( hr = QueryRelatedBundlesForScopeAndBitness(&queryContext); ButilExitOnFailure(hr, "Failed to query 32-bit related bundles."); - queryContext.regBitness = REG_KEY_64BIT; + if (fSearch64) + { + queryContext.regBitness = REG_KEY_64BIT; - hr = QueryRelatedBundlesForScopeAndBitness(&queryContext); - ButilExitOnFailure(hr, "Failed to query 64-bit related bundles."); + hr = QueryRelatedBundlesForScopeAndBitness(&queryContext); + ButilExitOnFailure(hr, "Failed to query 64-bit related bundles."); + } LExit: return hr; -- cgit v1.2.3-55-g6feb