diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2018-04-15 23:24:42 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2018-04-25 06:57:23 +0200 |
commit | b84244378d411b83355b8763d3505031dd5ec324 (patch) | |
tree | 1588a7ed3b945258590243c228ce1ac470a50107 /solenv | |
parent | aa45e2745f14c5626fe163939dc7d101efe9d1cd (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 (https://support.microsoft.com/en-us/help/2999226) available as
a zip archive from
https://www.microsoft.com/en-us/download/details.aspx?id=48234
- 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: https://gerrit.libreoffice.org/52923
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/bin/modules/installer/windows/idtglobal.pm | 11 | ||||
-rw-r--r-- | solenv/bin/modules/installer/windows/upgrade.pm | 12 |
2 files changed, 2 insertions, 21 deletions
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm index 3cf086c7a206..db92aac5bd55 100644 --- a/solenv/bin/modules/installer/windows/idtglobal.pm +++ b/solenv/bin/modules/installer/windows/idtglobal.pm @@ -1084,9 +1084,8 @@ sub add_custom_action_to_install_table my $actionposition = 0; - if ( $position eq "end" ) { $actionposition = get_last_position_in_sequencetable($installtable) + 25; } - elsif ( $position =~ /^\s*behind_/ ) { $actionposition = get_position_in_sequencetable($position, $installtable) + 2; } - else { $actionposition = get_position_in_sequencetable($position, $installtable) - 2; } + if ( $position =~ /^\s*\d+\s*$/ ) { $actionposition = $position; } # setting the position directly, number defined in scp2 + else { $actionposition = "POSITIONTEMPLATE_" . $position; } my $line = $actionname . "\t" . $actioncondition . "\t" . $actionposition . "\n"; push(@{$installtable}, $line); @@ -1129,12 +1128,6 @@ sub add_custom_action_to_install_table $actioncondition =~ s/FEATURETEMPLATE/$feature/g; # only execute Custom Action, if feature of the file is installed -# my $actionposition = 0; -# if ( $position eq "end" ) { $actionposition = get_last_position_in_sequencetable($installtable) + 25; } -# elsif ( $position =~ /^\s*behind_/ ) { $actionposition = get_position_in_sequencetable($position, $installtable) + 2; } -# else { $actionposition = get_position_in_sequencetable($position, $installtable) - 2; } -# my $line = $actionname . "\t" . $actioncondition . "\t" . $actionposition . "\n"; - my $positiontemplate = ""; if ( $position =~ /^\s*\d+\s*$/ ) { $positiontemplate = $position; } # setting the position directly, number defined in scp2 else { $positiontemplate = "POSITIONTEMPLATE_" . $position; } diff --git a/solenv/bin/modules/installer/windows/upgrade.pm b/solenv/bin/modules/installer/windows/upgrade.pm index 6c02f99fe0f4..54838212404c 100644 --- a/solenv/bin/modules/installer/windows/upgrade.pm +++ b/solenv/bin/modules/installer/windows/upgrade.pm @@ -45,18 +45,6 @@ sub create_upgrade_table $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTS" . "\n"; push(@upgradetable, $newline); - # Detecting if VC Runtime is installed on system - $newline = "VCRUNTIME_UPGRADE_CODE" . "\t" . "14.0.24215" . "\t" . "15.0.0" . "\t" . "" . "\t" . "258" . "\t" . "" . "\t" . "VCRUNTIME_DETECTED" . "\n"; - if ( $installer::globals::cpuname eq 'X86_64' ) - { - $newline =~ s/VCRUNTIME_UPGRADE_CODE/{36F68A90-239C-34DF-B58C-64B30153CE35}/; - } - else - { - $newline =~ s/VCRUNTIME_UPGRADE_CODE/{65E5BD06-6392-3027-8C26-853107D3CF1A}/; - } - push(@upgradetable, $newline); - # Saving the file my $upgradetablename = $basedir . $installer::globals::separator . "Upgrade.idt"; |