aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/package.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-01-03 15:35:14 -0600
committerSean Hall <r.sean.hall@gmail.com>2022-01-04 19:19:43 -0600
commit1f5314302b3c8bc1977aed79df1d05c52608f382 (patch)
treef0fef3a4462352c914a4cc9413515d07f2244703 /src/burn/engine/package.cpp
parentdb44f6cf3b1eb476e47384f2eccba5712808def5 (diff)
downloadwix-1f5314302b3c8bc1977aed79df1d05c52608f382.tar.gz
wix-1f5314302b3c8bc1977aed79df1d05c52608f382.tar.bz2
wix-1f5314302b3c8bc1977aed79df1d05c52608f382.zip
Don't assume Exe packages with Burn protocol are bundles.
Related to #3693
Diffstat (limited to 'src/burn/engine/package.cpp')
-rw-r--r--src/burn/engine/package.cpp22
1 files changed, 7 insertions, 15 deletions
diff --git a/src/burn/engine/package.cpp b/src/burn/engine/package.cpp
index bea48cb5..d9087f79 100644
--- a/src/burn/engine/package.cpp
+++ b/src/burn/engine/package.cpp
@@ -350,6 +350,9 @@ extern "C" void PackageUninitialize(
350 350
351 switch (pPackage->type) 351 switch (pPackage->type)
352 { 352 {
353 case BURN_PACKAGE_TYPE_BUNDLE:
354 BundlePackageEnginePackageUninitialize(pPackage);
355 break;
353 case BURN_PACKAGE_TYPE_EXE: 356 case BURN_PACKAGE_TYPE_EXE:
354 ExeEnginePackageUninitialize(pPackage); // TODO: Modularization 357 ExeEnginePackageUninitialize(pPackage); // TODO: Modularization
355 break; 358 break;
@@ -439,22 +442,11 @@ extern "C" HRESULT PackageFindRelatedById(
439 ) 442 )
440{ 443{
441 HRESULT hr = S_OK; 444 HRESULT hr = S_OK;
442 BURN_PACKAGE* pPackage = NULL; 445 BURN_RELATED_BUNDLE* pRelatedBundle = NULL;
443 446
444 for (DWORD i = 0; i < pRelatedBundles->cRelatedBundles; ++i) 447 hr = RelatedBundleFindById(pRelatedBundles, wzId, &pRelatedBundle);
445 { 448 *ppPackage = FAILED(hr) ? NULL : &pRelatedBundle->package;
446 pPackage = &pRelatedBundles->rgRelatedBundles[i].package;
447
448 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, pPackage->sczId, -1, wzId, -1))
449 {
450 *ppPackage = pPackage;
451 ExitFunction1(hr = S_OK);
452 }
453 }
454 449
455 hr = E_NOTFOUND;
456
457LExit:
458 return hr; 450 return hr;
459} 451}
460 452