diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2020-03-29 19:16:30 +1000 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2020-03-30 21:40:34 +1000 |
| commit | 1a0190bd31953a5ffb68cac75866328dccbf03f2 (patch) | |
| tree | 56a063bc5ac84b72b62baa71b590d2e26379cf37 /src/engine/burnextension.cpp | |
| parent | 0354a00e74492ad8d930c5bf499bc8606e48b1c9 (diff) | |
| download | wix-1a0190bd31953a5ffb68cac75866328dccbf03f2.tar.gz wix-1a0190bd31953a5ffb68cac75866328dccbf03f2.tar.bz2 wix-1a0190bd31953a5ffb68cac75866328dccbf03f2.zip | |
Add support for ExtensionSearches.
Diffstat (limited to 'src/engine/burnextension.cpp')
| -rw-r--r-- | src/engine/burnextension.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/engine/burnextension.cpp b/src/engine/burnextension.cpp index 99673cd9..68d34123 100644 --- a/src/engine/burnextension.cpp +++ b/src/engine/burnextension.cpp | |||
| @@ -182,3 +182,52 @@ EXTERN_C void BurnExtensionUnload( | |||
| 182 | } | 182 | } |
| 183 | } | 183 | } |
| 184 | } | 184 | } |
| 185 | |||
| 186 | EXTERN_C HRESULT BurnExtensionFindById( | ||
| 187 | __in BURN_EXTENSIONS* pBurnExtensions, | ||
| 188 | __in_z LPCWSTR wzId, | ||
| 189 | __out BURN_EXTENSION** ppExtension | ||
| 190 | ) | ||
| 191 | { | ||
| 192 | HRESULT hr = S_OK; | ||
| 193 | BURN_EXTENSION* pExtension = NULL; | ||
| 194 | |||
| 195 | for (DWORD i = 0; i < pBurnExtensions->cExtensions; ++i) | ||
| 196 | { | ||
| 197 | pExtension = &pBurnExtensions->rgExtensions[i]; | ||
| 198 | |||
| 199 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pExtension->sczId, -1, wzId, -1)) | ||
| 200 | { | ||
| 201 | *ppExtension = pExtension; | ||
| 202 | ExitFunction1(hr = S_OK); | ||
| 203 | } | ||
| 204 | } | ||
| 205 | |||
| 206 | hr = E_NOTFOUND; | ||
| 207 | |||
| 208 | LExit: | ||
| 209 | return hr; | ||
| 210 | } | ||
| 211 | |||
| 212 | EXTERN_C BEEAPI BurnExtensionPerformSearch( | ||
| 213 | __in BURN_EXTENSION* pExtension, | ||
| 214 | __in LPWSTR wzSearchId, | ||
| 215 | __in LPWSTR wzVariable | ||
| 216 | ) | ||
| 217 | { | ||
| 218 | HRESULT hr = S_OK; | ||
| 219 | BUNDLE_EXTENSION_SEARCH_ARGS args = { }; | ||
| 220 | BUNDLE_EXTENSION_SEARCH_RESULTS results = { }; | ||
| 221 | |||
| 222 | args.cbSize = sizeof(args); | ||
| 223 | args.wzId = wzSearchId; | ||
| 224 | args.wzVariable = wzVariable; | ||
| 225 | |||
| 226 | results.cbSize = sizeof(results); | ||
| 227 | |||
| 228 | hr = pExtension->pfnBurnExtensionProc(BUNDLE_EXTENSION_MESSAGE_SEARCH, &args, &results, pExtension->pvBurnExtensionProcContext); | ||
| 229 | ExitOnFailure(hr, "BundleExtension '%ls' Search '%ls' failed.", pExtension->sczId, wzSearchId); | ||
| 230 | |||
| 231 | LExit: | ||
| 232 | return hr; | ||
| 233 | } | ||
