Sequence RemoveExistingProducts dynamically at run-time
With ZRCola we renumbered the component GUIDs to group them by platform/ language. However, they are the very same files and calling RemoveExistingProducts after the upgrade is finished treats those components as orphaned and removes the just installed files. Fortunately, if we sequence the RemoveExistingProducts before the upgrade, it completely removes all components then installs the new ones. Unfortunately, sequencing RemoveExistingProducts before the upgrade is sub-optimal on minor upgrades. This commit extends the InstallExecuteSequence table key to allow the same custom action appear multiple times and introduces conditioning. This way the upgrade process can switch between "remove old, install new" and "install new, remove old" strategy in run-time based on a condition. The condition is usually a property from the Upgrade table that is bound to a product upgrade GUID that requires "remove old, install new" to upgrade properly. Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
parent
836708c45b
commit
46927de545