Issue: Event handler for DetectRelatedMsiPackage is being called on uninstall when it shouldn't and it's parameter information is misleading (DetectRelatedMsiPackageEventArgs.PackageId is "Package A" but DetectRelatedMsiPackageEventArgs.ProductCode is actually the ProductCode of Package B). The action that this is coming in as is MajorUpgrade.
Scenario: A.msi depends on B.msi to be installed first; so A.msi has an entry in its upgrade table:
UpgradeCode = B.msi's upgrade code
Version Min = B's min version
Version Max = null
Attributes = 0x00000102 (Only Detect, Include VersionMinInclusive)
Remove = null
ActionProperty = B_INSTALLED
This is done to detect in A.msi if B.msi has already been installed by using the UpgradeCode of B in case other details change about it (registry keys, etc.), the upgrade code is unique.
Although this scenario is not common and a bit strange, it does work at the MSI level. So it would be nice to not have this scenario trigger a DetectRelatedMsiPackage in the bootstrapper during uninstall and/or not have it be signalled as a MajorUpgrade.