NMake inline files are always created using ACP. The "1252" in the .idtx
header has no effect on this. However, we must encode the .idt files
using correct charset/codepage regardless the ACP being used on the
building machine.
Signed-off-by: Simon Rozman <simon@rozman.si>
NMAKE invocations are costly (slow, no-parallel support).
Rather than pinpoint cleaning of each combination of $(PKG), $(LANG),
$(PLAT) and $(CFG) related files, we do the wildcard cleaning of all
$(PKG) related files.
Signed-off-by: Simon Rozman <simon@rozman.si>
The products using Active Setup prior to
18cd389029502ec73da4b62ecdc1792ebdb805f8 upgrade are prone to uninstall
failure because of the missing StubPath value in the registry.
Author the Upgrade table of the package to have those products listed in
a property called `ACTIVESETUPFAULTYPRODUCTS` to inject StubPath in the
registry before RemoveExistingProducts.
Signed-off-by: Simon Rozman <simon@rozman.si>
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>