updating: require dotnet >=3.1.10 (#9060)

This commit is contained in:
Andrey Nekrasov 2021-01-12 21:52:17 +03:00 committed by GitHub
parent 9073ce8884
commit 6ecf8b60b6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 12 deletions

View file

@ -38,7 +38,6 @@ AGGREGATABLE
AHybrid
Aissue
akamaihd
alannt
ALarger
alekhyareddy
alertsolid
@ -117,8 +116,8 @@ atlfile
atlstr
attr
Attribs
aumid
AUMID
aumid
AUTHN
AUTOAPPEND
autocomplete
@ -222,6 +221,7 @@ CENTERALIGN
cfg
changecursor
Changemove
charconv
charset
chdir
checkbox
@ -279,7 +279,6 @@ codeofconduct
codeql
codereview
COINIT
Colorbrush
colorconv
colorhistory
colorhistorylimit
@ -467,8 +466,8 @@ DISPIDAMBIENTDLCONTROL
DISPINFO
Displayandhidethedesktop
DISPLAYCHANGE
displayname
DISPLAYNAME
displayname
divyan
DLACTIVEXCTLS
DLCONTROL
@ -655,7 +654,7 @@ ERASEBKGND
EREOF
EResize
eriawan
ERRORLEVEL
errc
errorlevel
ERRORMESSAGE
ERRORTITLE
@ -797,7 +796,6 @@ globalplugins
globals
gmx
google
gordonwatts
GPTR
grayscale
GText
@ -857,8 +855,8 @@ HLSL
hmenu
hmodule
hmon
hmonitor
HMONITOR
hmonitor
HOLDENTER
HOLDESC
homljgmgpmcbpjbnjpfijnhipfkiclkd
@ -1338,7 +1336,6 @@ modulekey
MONITORINFO
MONITORINFOEX
MONITORINFOEXW
MONITORINFOF
monitorinfof
Monthand
Moq
@ -1803,6 +1800,7 @@ resw
resx
returnvalue
retval
rexit
rfind
rgb
RGBQUAD
@ -2003,6 +2001,7 @@ sql
src
SRCCOPY
sre
sregex
SResize
srme
srre
@ -2077,7 +2076,6 @@ SVGIn
svgpreviewhandler
svgr
SVGSVG
SWAPBUTTON
Switchbetweenvirtualdesktops
SWP
swprintf
@ -2167,7 +2165,6 @@ toggleright
toggleswitch
toolbar
Toolchain
Toolset
toolset
tooltip
toolwindow

View file

@ -17,8 +17,30 @@ namespace updating
{
return false;
}
const char DESKTOP_DOTNET_RUNTIME_STRING[] = "Microsoft.WindowsDesktop.App 3.1.";
return runtimes->find(DESKTOP_DOTNET_RUNTIME_STRING) != std::string::npos;
constexpr size_t REQUIRED_MINIMAL_PATCH = 10;
std::regex dotnet3_1_x{ R"(Microsoft\.WindowsDesktop\.App\s3\.1\.(\d+))" };
size_t latestPatchInstalled = 0;
using rexit = std::sregex_iterator;
for (auto it = rexit{ begin(*runtimes), end(*runtimes), dotnet3_1_x }; it != rexit{}; ++it)
{
if (!it->ready() || it->size() < 2)
{
continue;
}
auto patchNumberGroup = (*it)[1];
if (!patchNumberGroup.matched)
{
continue;
}
const auto patchString = patchNumberGroup.str();
size_t patch = 0;
if (auto [_, ec] = std::from_chars(&*begin(patchString), &*end(patchString), patch); ec == std::errc())
{
latestPatchInstalled = std::max(patch, latestPatchInstalled);
}
}
return latestPatchInstalled >= REQUIRED_MINIMAL_PATCH;
}
std::optional<fs::path> download_dotnet()

View file

@ -7,6 +7,7 @@
#include <winrt/base.h>
#pragma warning(default : 5205)
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <Windows.h>
#include <MsiQuery.h>
#include <Shlwapi.h>
@ -19,6 +20,8 @@
#include <PathCch.h>
#include <optional>
#include <regex>
#include <charconv>
#include <expected.hpp>