path: root/external
diff options
authorMike Kaganski <>2018-04-15 23:24:42 +0300
committerMike Kaganski <>2018-04-25 06:57:23 +0200
commitb84244378d411b83355b8763d3505031dd5ec324 (patch)
tree1588a7ed3b945258590243c228ce1ac470a50107 /external
parentaa45e2745f14c5626fe163939dc7d101efe9d1cd (diff)
Install UCRT from MSUs, not using nested VC Redist install
Using nested install is bad because (1) MS advises against it (though it most possibly doesn't relate to our specific case, when we install the vc redist exe package in UI part, so actually only a single MSI session is active at any time); (2) because it adds some extra interactions (user sees something "unrelated" being installed, which raises concerns; additional admin authentication required); and (3) because it runs in InstallUISequence, thus only installing the UCRT when doing interactive installation (unattended installs, including GPO, need to install UCRT separately). This patch aims to incorporate the original UCRT MSU (Windows Update) packages ( available as a zip archive from - the same as used in VC redists for VS 2015 and 2017. This obsoletes the separate installation of the redist; since we also have the redist as merge module in our MSI, that is enough (and removes redundancy). The MSUs are installed using wusa.exe in a custom action (deferred, non-impersonating). As a small bonus, embedding MSUs instead of redist EXE allows us to shrink the size of installer a little (~10 MB). As deferred custom actions cannot access current installer database, we workaround this by using initial immediate impersonating action to extract the binaries into a temporary location. To ensure that the file gets removed upon completion (both successful and failed), we use an additional cleanup action. Commit 61b1d631331551b43bc7d619be33bfbfeff7cad6 is effectively reverted. Change-Id: I1529356fdcc67ff24b232c01ddf8bb3a31bb00bd Reviewed-on: Tested-by: Jenkins <> Reviewed-by: Mike Kaganski <>
Diffstat (limited to 'external')
-rw-r--r--external/msc-externals/ (renamed from external/msc-externals/
2 files changed, 11 insertions, 6 deletions
diff --git a/external/msc-externals/ b/external/msc-externals/
index b7f7f47034f9..07ea3878a106 100644
--- a/external/msc-externals/
+++ b/external/msc-externals/
@@ -17,11 +17,11 @@ $(eval $(call gb_Module_add_targets,msc-externals,\
-# Install the universal crts and VC runtimes (tdf#108580)
-ifneq ($(VCREDIST_DIR),)
+# Install the universal crts (tdf#108580)
+ifneq ($(UCRT_REDISTDIR),)
$(eval $(call gb_Module_add_targets,msc-externals,\
- Package_vcredist_exe \
+ Package_ucrt \
diff --git a/external/msc-externals/ b/external/msc-externals/
index bf9ef632285c..52e6f0cbae97 100644
--- a/external/msc-externals/
+++ b/external/msc-externals/
@@ -7,10 +7,15 @@
# file, You can obtain one at
-$(eval $(call gb_Package_Package,vcredist_exe,$(VCREDIST_DIR)))
+$(eval $(call gb_Package_Package,ucrt,$(UCRT_REDISTDIR)))
-$(eval $(call gb_Package_add_files,vcredist_exe,$(LIBO_ETC_FOLDER),\
+$(eval $(call gb_Package_add_files,ucrt,$(LIBO_ETC_FOLDER),\
+ Windows6.1-KB2999226-x64.msu \
+ Windows6.1-KB2999226-x86.msu \
+ Windows8.1-KB2999226-x64.msu \
+ Windows8.1-KB2999226-x86.msu \
+ Windows8-RT-KB2999226-x64.msu \
+ Windows8-RT-KB2999226-x86.msu \
# vim:set shiftwidth=4 tabstop=4 noexpandtab: