aboutsummaryrefslogtreecommitdiff
path: root/src/be
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-07-10 21:25:44 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-07-10 22:10:26 +1000
commitf866ab77f8fd0790f4d6628f54dcdf0bd66fccb6 (patch)
treeb3705d3655e678003d4fce590e7c5cb1c836778e /src/be
parentaf43f098d7d7cc0fe21c7d7b0fe991763e9cae07 (diff)
downloadwix-f866ab77f8fd0790f4d6628f54dcdf0bd66fccb6.tar.gz
wix-f866ab77f8fd0790f4d6628f54dcdf0bd66fccb6.tar.bz2
wix-f866ab77f8fd0790f4d6628f54dcdf0bd66fccb6.zip
Change the DetectSHA2Support element to WindowsFeatureSearch. This will make it easier to add support for other Windows features in the future.
Diffstat (limited to 'src/be')
-rw-r--r--src/be/detectsha2support.cpp8
-rw-r--r--src/be/detectsha2support.h2
-rw-r--r--src/be/utilsearch.cpp33
-rw-r--r--src/be/utilsearch.h15
4 files changed, 47 insertions, 11 deletions
diff --git a/src/be/detectsha2support.cpp b/src/be/detectsha2support.cpp
index f1f3637e..90e349cd 100644
--- a/src/be/detectsha2support.cpp
+++ b/src/be/detectsha2support.cpp
@@ -3,7 +3,7 @@
3#include "precomp.h" 3#include "precomp.h"
4 4
5// https://gist.github.com/navossoc/7572c7d82243e9f818989e2765e7793a 5// https://gist.github.com/navossoc/7572c7d82243e9f818989e2765e7793a
6HRESULT DetectSHA2Support( 6HRESULT DetectSHA2CodeSigning(
7 __out BOOL* pfSupported 7 __out BOOL* pfSupported
8 ) 8 )
9{ 9{
@@ -38,7 +38,7 @@ LExit:
38 return hr; 38 return hr;
39} 39}
40 40
41HRESULT UtilPerformDetectSHA2Support( 41HRESULT UtilPerformDetectSHA2CodeSigning(
42 __in LPCWSTR wzVariable, 42 __in LPCWSTR wzVariable,
43 __in UTIL_SEARCH* /*pSearch*/, 43 __in UTIL_SEARCH* /*pSearch*/,
44 __in IBundleExtensionEngine* pEngine 44 __in IBundleExtensionEngine* pEngine
@@ -47,8 +47,8 @@ HRESULT UtilPerformDetectSHA2Support(
47 HRESULT hr = S_OK; 47 HRESULT hr = S_OK;
48 BOOL fSupported = FALSE; 48 BOOL fSupported = FALSE;
49 49
50 hr = DetectSHA2Support(&fSupported); 50 hr = DetectSHA2CodeSigning(&fSupported);
51 ExitOnFailure(hr, "DetectSHA2Support failed."); 51 ExitOnFailure(hr, "DetectSHA2CodeSigning failed.");
52 52
53 hr = pEngine->SetVariableNumeric(wzVariable, fSupported ? 1 : 0); 53 hr = pEngine->SetVariableNumeric(wzVariable, fSupported ? 1 : 0);
54 ExitOnFailure(hr, "Failed to set variable '%ls'", wzVariable); 54 ExitOnFailure(hr, "Failed to set variable '%ls'", wzVariable);
diff --git a/src/be/detectsha2support.h b/src/be/detectsha2support.h
index 7f1f6031..c38a3d59 100644
--- a/src/be/detectsha2support.h
+++ b/src/be/detectsha2support.h
@@ -1,7 +1,7 @@
1#pragma once 1#pragma once
2// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3 3
4HRESULT UtilPerformDetectSHA2Support( 4HRESULT UtilPerformDetectSHA2CodeSigning(
5 __in LPCWSTR wzVariable, 5 __in LPCWSTR wzVariable,
6 __in UTIL_SEARCH* pSearch, 6 __in UTIL_SEARCH* pSearch,
7 __in IBundleExtensionEngine* pEngine 7 __in IBundleExtensionEngine* pEngine
diff --git a/src/be/utilsearch.cpp b/src/be/utilsearch.cpp
index 4e9d86a1..7cd2ea09 100644
--- a/src/be/utilsearch.cpp
+++ b/src/be/utilsearch.cpp
@@ -13,9 +13,10 @@ STDMETHODIMP UtilSearchParseFromXml(
13 IXMLDOMNode* pixnNode = NULL; 13 IXMLDOMNode* pixnNode = NULL;
14 DWORD cNodes = 0; 14 DWORD cNodes = 0;
15 BSTR bstrNodeName = NULL; 15 BSTR bstrNodeName = NULL;
16 LPWSTR scz = NULL;
16 17
17 // Select Util search nodes. 18 // Select Util search nodes.
18 hr = XmlSelectNodes(pixnBundleExtension, L"WixDetectSHA2Support", &pixnNodes); 19 hr = XmlSelectNodes(pixnBundleExtension, L"WixWindowsFeatureSearch", &pixnNodes);
19 ExitOnFailure(hr, "Failed to select Util search nodes."); 20 ExitOnFailure(hr, "Failed to select Util search nodes.");
20 21
21 // Get Util search node count. 22 // Get Util search node count.
@@ -46,9 +47,23 @@ STDMETHODIMP UtilSearchParseFromXml(
46 ExitOnFailure(hr, "Failed to get @Id."); 47 ExitOnFailure(hr, "Failed to get @Id.");
47 48
48 // Read type specific attributes. 49 // Read type specific attributes.
49 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"WixDetectSHA2Support", -1)) 50 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"WixWindowsFeatureSearch", -1))
50 { 51 {
51 pSearch->Type = UTIL_SEARCH_TYPE_DETECT_SHA2_SUPPORT; 52 pSearch->Type = UTIL_SEARCH_TYPE_WINDOWS_FEATURE_SEARCH;
53
54 // @Type
55 hr = XmlGetAttributeEx(pixnNode, L"Type", &scz);
56 ExitOnFailure(hr, "Failed to get @Type.");
57
58 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"sha2CodeSigning", -1))
59 {
60 pSearch->WindowsFeatureSearch.type = UTIL_WINDOWS_FEATURE_SEARCH_TYPE_SHA2_CODE_SIGNING;
61 }
62 else
63 {
64 hr = E_INVALIDARG;
65 ExitOnFailure(hr, "Invalid value for @Type: %ls", scz);
66 }
52 } 67 }
53 else 68 else
54 { 69 {
@@ -62,6 +77,7 @@ STDMETHODIMP UtilSearchParseFromXml(
62 } 77 }
63 78
64LExit: 79LExit:
80 ReleaseStr(scz);
65 ReleaseBSTR(bstrNodeName); 81 ReleaseBSTR(bstrNodeName);
66 ReleaseObject(pixnNode); 82 ReleaseObject(pixnNode);
67 ReleaseObject(pixnNodes); 83 ReleaseObject(pixnNodes);
@@ -100,8 +116,15 @@ STDMETHODIMP UtilSearchExecute(
100 116
101 switch (pSearch->Type) 117 switch (pSearch->Type)
102 { 118 {
103 case UTIL_SEARCH_TYPE_DETECT_SHA2_SUPPORT: 119 case UTIL_SEARCH_TYPE_WINDOWS_FEATURE_SEARCH:
104 hr = UtilPerformDetectSHA2Support(wzVariable, pSearch, pEngine); 120 switch (pSearch->WindowsFeatureSearch.type)
121 {
122 case UTIL_WINDOWS_FEATURE_SEARCH_TYPE_SHA2_CODE_SIGNING:
123 hr = UtilPerformDetectSHA2CodeSigning(wzVariable, pSearch, pEngine);
124 break;
125 default:
126 hr = E_UNEXPECTED;
127 }
105 break; 128 break;
106 default: 129 default:
107 hr = E_UNEXPECTED; 130 hr = E_UNEXPECTED;
diff --git a/src/be/utilsearch.h b/src/be/utilsearch.h
index 1e0ca96d..deeab1f7 100644
--- a/src/be/utilsearch.h
+++ b/src/be/utilsearch.h
@@ -7,7 +7,13 @@
7enum UTIL_SEARCH_TYPE 7enum UTIL_SEARCH_TYPE
8{ 8{
9 UTIL_SEARCH_TYPE_NONE, 9 UTIL_SEARCH_TYPE_NONE,
10 UTIL_SEARCH_TYPE_DETECT_SHA2_SUPPORT, 10 UTIL_SEARCH_TYPE_WINDOWS_FEATURE_SEARCH,
11};
12
13enum UTIL_WINDOWS_FEATURE_SEARCH_TYPE
14{
15 UTIL_WINDOWS_FEATURE_SEARCH_TYPE_NONE,
16 UTIL_WINDOWS_FEATURE_SEARCH_TYPE_SHA2_CODE_SIGNING,
11}; 17};
12 18
13 19
@@ -18,6 +24,13 @@ typedef struct _UTIL_SEARCH
18 LPWSTR sczId; 24 LPWSTR sczId;
19 25
20 UTIL_SEARCH_TYPE Type; 26 UTIL_SEARCH_TYPE Type;
27 union
28 {
29 struct
30 {
31 UTIL_WINDOWS_FEATURE_SEARCH_TYPE type;
32 } WindowsFeatureSearch;
33 };
21} UTIL_SEARCH; 34} UTIL_SEARCH;
22 35
23typedef struct _UTIL_SEARCHES 36typedef struct _UTIL_SEARCHES