diff options
Diffstat (limited to 'src/be/utilsearch.cpp')
| -rw-r--r-- | src/be/utilsearch.cpp | 33 |
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 | ||
| 64 | LExit: | 79 | LExit: |
| 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; |
