From 46927de545f4801455031626c2ac66c95a9da342 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Sat, 15 Feb 2020 18:48:57 +0100 Subject: [PATCH] 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 --- Core/Makefile | Bin 159028 -> 159626 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Core/Makefile b/Core/Makefile index 346e64062f7dd5620e8e3618c26e081ff6debbb6..563ec889b891a663ec29aaefba90a6a47b4bc9f8 100644 GIT binary patch delta 458 zcmdmTi?i!KXG06)7N$kA)BnjZiA)#JXJXmDOqQvMd9oQN-{fl?LcT!^t_;2m{tRJ2 zI-bD^NV)-eAklaRPX<4RV1^I|M+P4tjAw8L%J?z30L4Rq7{u0OP-0MEP-L(Ll1dCp z(*^w)g{NQhV^o;_B$7$Yol?U&84MXr7)+