Simon Rozman 46927de545 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>
2020-02-24 12:59:54 +01:00
..
2020-02-03 10:44:40 +01:00
2016-03-12 14:13:12 +01:00
2018-09-07 10:30:45 +02:00
2018-09-07 10:30:45 +02:00