[Auto-update] Turn off on Windows < 1903 (#10240)

This commit is contained in:
Andrey Nekrasov
2021-03-17 16:49:07 +03:00
committed by GitHub
parent 7c8ed9e2bb
commit 535cd1f9ac
8 changed files with 47 additions and 6 deletions

View File

@@ -3,6 +3,7 @@
#include "installer.h"
#include <common/version/version.h>
#include <common/notifications/notifications.h>
#include <common/utils/os-detect.h>
#include "utils/winapi_error.h"
namespace // Strings in this namespace should not be localized
@@ -192,4 +193,8 @@ namespace updating
co_return false;
}
bool is_old_windows_version()
{
return !Is19H1OrHigher();
}
}

View File

@@ -16,4 +16,6 @@ namespace updating
std::optional<VersionHelper> get_installed_powertoys_version();
std::future<bool> uninstall_previous_msix_version_async();
bool is_old_windows_version();
}

View File

@@ -7,9 +7,10 @@
#include "notifications.h"
#include "updating.h"
#include <common/utils/json.h>
#include <common/SettingsAPI/settings_helpers.h>
#include <common/notifications/notifications.h>
#include <common/SettingsAPI/settings_helpers.h>
#include <common/utils/json.h>
#include <common/utils/os-detect.h>
namespace // Strings in this namespace should not be localized
{
@@ -68,12 +69,17 @@ namespace updating
{
co_return nonstd::make_unexpected(strings.GITHUB_NEW_VERSION_USING_LOCAL_BUILD_ERROR);
}
try
{
http::HttpClient client;
json::JsonObject release_object;
const VersionHelper current_version(VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION);
VersionHelper github_version = current_version;
// On a <1903 system, block updates to 0.36+
const bool blockNonPatchReleases = current_version.major == 0 && current_version.minor == 35 && !Is19H1OrHigher();
if (prerelease)
{
const auto body = co_await client.request(Uri{ ALL_RELEASES_ENDPOINT });
@@ -102,6 +108,11 @@ namespace updating
}
}
if (blockNonPatchReleases && github_version >= VersionHelper{ 0, 36, 0 })
{
co_return version_up_to_date{};
}
if (github_version <= current_version)
{
co_return version_up_to_date{};

View File

@@ -2,7 +2,7 @@
#include <winrt/Windows.Foundation.Metadata.h>
// The following three helper functions determine if the user has a build version higher than or equal to 19h1, as that is a requirement for xaml islands
// The following three helper functions determine if the user has a build version higher than or equal to 19h1 (aka 1903), as that is a requirement for xaml islands
// Source : Microsoft-ui-xaml github
// Link: https://github.com/microsoft/microsoft-ui-xaml/blob/c045cde57c5c754683d674634a0baccda34d58c4/dev/dll/SharedHelpers.cpp
template<uint16_t APIVersion>

View File

@@ -39,3 +39,14 @@ std::wstring VersionHelper::toWstring() const
result += std::to_wstring(revision);
return result;
}
std::string VersionHelper::toString() const
{
std::string result{ "v" };
result += std::to_string(major);
result += '.';
result += std::to_string(minor);
result += '.';
result += std::to_string(revision);
return result;
}

View File

@@ -15,4 +15,5 @@ struct VersionHelper
size_t revision;
std::wstring toWstring() const;
std::string toString() const;
};