diff options
Diffstat (limited to 'Source/Core/UICommon/AutoUpdate.cpp')
| -rw-r--r-- | Source/Core/UICommon/AutoUpdate.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/Source/Core/UICommon/AutoUpdate.cpp b/Source/Core/UICommon/AutoUpdate.cpp index d54a488c46..35b17ed19d 100644 --- a/Source/Core/UICommon/AutoUpdate.cpp +++ b/Source/Core/UICommon/AutoUpdate.cpp @@ -8,10 +8,12 @@ #include <fmt/format.h> #include <picojson.h> +#include "Common/CommonFuncs.h" #include "Common/CommonPaths.h" #include "Common/FileUtil.h" #include "Common/HttpRequest.h" #include "Common/Logging/Log.h" +#include "Common/MsgHandler.h" #include "Common/StringUtil.h" #include "Common/Version.h" @@ -159,7 +161,7 @@ static std::string GetPlatformID() } void AutoUpdateChecker::CheckForUpdate(std::string_view update_track, - std::string_view hash_override) + std::string_view hash_override, const CheckType check_type) { // Don't bother checking if updates are not supported or not enabled. if (!SystemSupportsAutoUpdates() || update_track.empty()) @@ -173,11 +175,14 @@ void AutoUpdateChecker::CheckForUpdate(std::string_view update_track, std::string url = fmt::format("https://dolphin-emu.org/update/check/v1/{}/{}/{}", update_track, version_hash, GetPlatformID()); + const bool is_manual_check = check_type == CheckType::Manual; + Common::HttpRequest req{std::chrono::seconds{10}}; auto resp = req.Get(url); if (!resp) { - ERROR_LOG_FMT(COMMON, "Auto-update request failed"); + if (is_manual_check) + CriticalAlertFmtT("Unable to contact update server."); return; } const std::string contents(reinterpret_cast<char*>(resp->data()), resp->size()); @@ -187,13 +192,15 @@ void AutoUpdateChecker::CheckForUpdate(std::string_view update_track, const std::string err = picojson::parse(json, contents); if (!err.empty()) { - ERROR_LOG_FMT(COMMON, "Invalid JSON received from auto-update service: {}", err); + CriticalAlertFmtT("Invalid JSON received from auto-update service : {0}", err); return; } picojson::object obj = json.get<picojson::object>(); if (obj["status"].get<std::string>() != "outdated") { + if (is_manual_check) + SuccessAlertFmtT("You are running the latest version available on this update track."); INFO_LOG_FMT(COMMON, "Auto-update status: we are up to date."); return; } @@ -212,7 +219,7 @@ void AutoUpdateChecker::CheckForUpdate(std::string_view update_track, } void AutoUpdateChecker::TriggerUpdate(const AutoUpdateChecker::NewVersionInformation& info, - AutoUpdateChecker::RestartMode restart_mode) + const AutoUpdateChecker::RestartMode restart_mode) { // Check to make sure we don't already have an update triggered if (s_update_triggered) @@ -241,8 +248,16 @@ void AutoUpdateChecker::TriggerUpdate(const AutoUpdateChecker::NewVersionInforma #ifdef __APPLE__ // Copy the updater so it can update itself if needed. const std::string reloc_updater_path = UpdaterPath(true); - File::CopyDir(UpdaterPath(), reloc_updater_path); - chmod((reloc_updater_path + UPDATER_CONTENT_PATH).c_str(), 0700); + if (!File::CopyDir(UpdaterPath(), reloc_updater_path)) + { + CriticalAlertFmtT("Unable to create updater copy."); + return; + } + if (chmod((reloc_updater_path + UPDATER_CONTENT_PATH).c_str(), 0700) != 0) + { + CriticalAlertFmtT("Unable to set permissions on updater copy."); + return; + } #endif // Run the updater! @@ -261,12 +276,14 @@ void AutoUpdateChecker::TriggerUpdate(const AutoUpdateChecker::NewVersionInforma } else { - ERROR_LOG_FMT(COMMON, "Could not start updater process: error={}", GetLastError()); + const std::string error = GetLastErrorString(); + CriticalAlertFmtT("Could not start updater process: {0}", error); } #else if (popen(command_line.c_str(), "r") == nullptr) { - ERROR_LOG_FMT(COMMON, "Could not start updater process: error={}", errno); + const std::string error = LastStrerrorString(); + CriticalAlertFmtT("Could not start updater process: {0}", error); } #endif |
