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 |