mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-22 22:00:39 -06:00
Updater: Add/clarify error messages
This commit is contained in:
@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user