diff options
Diffstat (limited to 'src/engine/dependency.cpp')
| -rw-r--r-- | src/engine/dependency.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/engine/dependency.cpp b/src/engine/dependency.cpp index 3d978740..4833de94 100644 --- a/src/engine/dependency.cpp +++ b/src/engine/dependency.cpp | |||
| @@ -680,10 +680,12 @@ LExit: | |||
| 680 | } | 680 | } |
| 681 | 681 | ||
| 682 | extern "C" void DependencyUnregisterBundle( | 682 | extern "C" void DependencyUnregisterBundle( |
| 683 | __in const BURN_REGISTRATION* pRegistration | 683 | __in const BURN_REGISTRATION* pRegistration, |
| 684 | __in const BURN_PACKAGES* pPackages | ||
| 684 | ) | 685 | ) |
| 685 | { | 686 | { |
| 686 | HRESULT hr = S_OK; | 687 | HRESULT hr = S_OK; |
| 688 | LPCWSTR wzDependentProviderKey = pRegistration->sczId; | ||
| 687 | 689 | ||
| 688 | // Remove the bundle provider key. | 690 | // Remove the bundle provider key. |
| 689 | hr = DepUnregisterDependency(pRegistration->hkRoot, pRegistration->sczProviderKey); | 691 | hr = DepUnregisterDependency(pRegistration->hkRoot, pRegistration->sczProviderKey); |
| @@ -695,6 +697,19 @@ extern "C" void DependencyUnregisterBundle( | |||
| 695 | { | 697 | { |
| 696 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_BUNDLE_UNREGISTERED_FAILED, pRegistration->sczProviderKey, hr); | 698 | LogId(REPORT_VERBOSE, MSG_DEPENDENCY_BUNDLE_UNREGISTERED_FAILED, pRegistration->sczProviderKey, hr); |
| 697 | } | 699 | } |
| 700 | |||
| 701 | // Best effort to make sure this bundle is not registered as a dependent for anything. | ||
| 702 | for (DWORD i = 0; i < pPackages->cPackages; ++i) | ||
| 703 | { | ||
| 704 | const BURN_PACKAGE* pPackage = pPackages->rgPackages + i; | ||
| 705 | UnregisterPackageDependency(pPackage->fPerMachine, pPackage, wzDependentProviderKey); | ||
| 706 | } | ||
| 707 | |||
| 708 | for (DWORD i = 0; i < pRegistration->relatedBundles.cRelatedBundles; ++i) | ||
| 709 | { | ||
| 710 | const BURN_PACKAGE* pPackage = &pRegistration->relatedBundles.rgRelatedBundles[i].package; | ||
| 711 | UnregisterPackageDependency(pPackage->fPerMachine, pPackage, wzDependentProviderKey); | ||
| 712 | } | ||
| 698 | } | 713 | } |
| 699 | 714 | ||
| 700 | // internal functions | 715 | // internal functions |
