aboutsummaryrefslogtreecommitdiff
path: root/src/be/utilsearch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/be/utilsearch.cpp')
-rw-r--r--src/be/utilsearch.cpp33
1 files changed, 28 insertions, 5 deletions
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;