I have two bundles. Both bundles contain 2 msis. One of these msis is shared between bundles so we have something like that:
- Bundle1 contains Product1.msi and Aux.msi
- Bundle2 contains Product2.msi and Aux.msi As you can see Aux.msi is part of both bundles. When I install both bundles on one PC everything is file. For the second bundle bootstrapper sees that Aux.msi is already installed, skips install operation for it, and marks in registry dependencies so that Aux.msi gets uninstalled only when both bundles are removed. But when Bundle2 has Aux.msi of the newer version here comes the problem. Here is the order of operations:
- Install Bundle1 which contains Product1.msi (version doesn't matter) and Aux.msi (version 1.0.0) - everything is ok
- Install Bundle2 which contains Product2.msi (version doesn't matter) and Aux.msi (version 2.0.0) - bundle catches that the previous version of Aux.msi is installed, uninstalls version 1.0.0, installs version 2.0.0. Everything looks good here but in the registry Bundle2 is set to the dependencies of Aux.msi and Bundle1 is left with the dead dependency to the Aux.msi of version 1.0.0. That is why if afterwords I uninstall Bundle2 the Aux.msi is uninstalled too and I get a broken installation of Bundle1 without Aux.msi on the PC. I truly believed that these kinds of situations should be handled properly by the burn engine. Any ideas on how to fix it?