diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-12-10 11:42:44 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-12-11 20:03:13 -0600 |
| commit | fc30db9fa3aa1d25a6ef078452864673caa67ec5 (patch) | |
| tree | e3415a5a1329a867b2934a038243e95098214ec3 /src/api/burn/balutil/balinfo.cpp | |
| parent | 1d58b3333d1d694d08b68f6c87223aa504bfe773 (diff) | |
| download | wix-fc30db9fa3aa1d25a6ef078452864673caa67ec5.tar.gz wix-fc30db9fa3aa1d25a6ef078452864673caa67ec5.tar.bz2 wix-fc30db9fa3aa1d25a6ef078452864673caa67ec5.zip | |
Add BA events for setting the update bundle.
Fixes #6410
Diffstat (limited to 'src/api/burn/balutil/balinfo.cpp')
| -rw-r--r-- | src/api/burn/balutil/balinfo.cpp | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/api/burn/balutil/balinfo.cpp b/src/api/burn/balutil/balinfo.cpp index 2746f49e..d9cc9b76 100644 --- a/src/api/burn/balutil/balinfo.cpp +++ b/src/api/burn/balutil/balinfo.cpp | |||
| @@ -166,7 +166,7 @@ LExit: | |||
| 166 | 166 | ||
| 167 | DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( | 167 | DAPI_(HRESULT) BalInfoAddRelatedBundleAsPackage( |
| 168 | __in BAL_INFO_PACKAGES* pPackages, | 168 | __in BAL_INFO_PACKAGES* pPackages, |
| 169 | __in LPCWSTR wzId, | 169 | __in_z LPCWSTR wzId, |
| 170 | __in BOOTSTRAPPER_RELATION_TYPE relationType, | 170 | __in BOOTSTRAPPER_RELATION_TYPE relationType, |
| 171 | __in BOOL /*fPerMachine*/, | 171 | __in BOOL /*fPerMachine*/, |
| 172 | __out_opt BAL_INFO_PACKAGE** ppPackage | 172 | __out_opt BAL_INFO_PACKAGE** ppPackage |
| @@ -228,6 +228,47 @@ LExit: | |||
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | 230 | ||
| 231 | DAPI_(HRESULT) BalInfoAddUpdateBundleAsPackage( | ||
| 232 | __in BAL_INFO_PACKAGES* pPackages, | ||
| 233 | __in_z LPCWSTR wzId, | ||
| 234 | __in_z LPCWSTR /*wzPreviousId*/, | ||
| 235 | __out_opt BAL_INFO_PACKAGE** ppPackage | ||
| 236 | ) | ||
| 237 | { | ||
| 238 | HRESULT hr = S_OK; | ||
| 239 | BAL_INFO_PACKAGE* pPackage = NULL; | ||
| 240 | |||
| 241 | // Check to see if the bundle is already in the list of packages. | ||
| 242 | for (DWORD i = 0; i < pPackages->cPackages; ++i) | ||
| 243 | { | ||
| 244 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, 0, wzId, -1, pPackages->rgPackages[i].sczId, -1)) | ||
| 245 | { | ||
| 246 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_ALREADY_EXISTS)); | ||
| 247 | } | ||
| 248 | } | ||
| 249 | |||
| 250 | // Add the update bundle as a package. | ||
| 251 | hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(&pPackages->rgPackages), pPackages->cPackages + 1, sizeof(BAL_INFO_PACKAGE), 2); | ||
| 252 | ExitOnFailure(hr, "Failed to allocate memory for update bundle package information."); | ||
| 253 | |||
| 254 | pPackage = pPackages->rgPackages + pPackages->cPackages; | ||
| 255 | ++pPackages->cPackages; | ||
| 256 | |||
| 257 | hr = StrAllocString(&pPackage->sczId, wzId, 0); | ||
| 258 | ExitOnFailure(hr, "Failed to copy update bundle package id."); | ||
| 259 | |||
| 260 | pPackage->type = BAL_INFO_PACKAGE_TYPE_BUNDLE_UPDATE; | ||
| 261 | |||
| 262 | if (ppPackage) | ||
| 263 | { | ||
| 264 | *ppPackage = pPackage; | ||
| 265 | } | ||
| 266 | |||
| 267 | LExit: | ||
| 268 | return hr; | ||
| 269 | } | ||
| 270 | |||
| 271 | |||
| 231 | DAPI_(HRESULT) BalInfoFindPackageById( | 272 | DAPI_(HRESULT) BalInfoFindPackageById( |
| 232 | __in BAL_INFO_PACKAGES* pPackages, | 273 | __in BAL_INFO_PACKAGES* pPackages, |
| 233 | __in LPCWSTR wzId, | 274 | __in LPCWSTR wzId, |
