2019-07-18 21:26:21 -04:00
|
|
|
|
using Mesen.GUI.Config;
|
|
|
|
|
using Mesen.GUI.Forms;
|
2019-03-14 12:34:29 -04:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
|
|
|
|
|
namespace Mesen.GUI.Updates
|
|
|
|
|
{
|
|
|
|
|
public static class UpdateHelper
|
|
|
|
|
{
|
2019-07-18 21:26:21 -04:00
|
|
|
|
public static bool PerformUpgrade()
|
|
|
|
|
{
|
|
|
|
|
Version newVersion = EmuApi.GetMesenVersion();
|
|
|
|
|
Version oldVersion = new Version(ConfigManager.Config.Version);
|
|
|
|
|
if(oldVersion < newVersion) {
|
|
|
|
|
//Upgrade
|
|
|
|
|
if(oldVersion <= new Version("0.1.0")) {
|
|
|
|
|
ConfigManager.Config.Audio.MasterVolume = 100;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ConfigManager.Config.Version = EmuApi.GetMesenVersion().ToString();
|
|
|
|
|
ConfigManager.ApplyChanges();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2019-03-14 12:34:29 -04:00
|
|
|
|
public static void CheckForUpdates(bool silent)
|
|
|
|
|
{
|
|
|
|
|
Task.Run(() => {
|
|
|
|
|
try {
|
|
|
|
|
using(var client = new WebClient()) {
|
|
|
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
|
|
|
|
|
|
|
|
string platform = Program.IsMono ? "linux" : "win";
|
|
|
|
|
xmlDoc.LoadXml(client.DownloadString("https://www.mesen.ca/snes/Services/GetLatestVersion.php?v=" + EmuApi.GetMesenVersion().ToString(3) + "&p=" + platform + "&l=" + ResourceHelper.GetLanguageCode()));
|
|
|
|
|
Version currentVersion = EmuApi.GetMesenVersion();
|
|
|
|
|
Version latestVersion = new Version(xmlDoc.SelectSingleNode("VersionInfo/LatestVersion").InnerText);
|
|
|
|
|
string changeLog = xmlDoc.SelectSingleNode("VersionInfo/ChangeLog").InnerText;
|
|
|
|
|
string fileHash = xmlDoc.SelectSingleNode("VersionInfo/Sha1Hash").InnerText;
|
|
|
|
|
string donateText = xmlDoc.SelectSingleNode("VersionInfo/DonateText")?.InnerText;
|
|
|
|
|
|
|
|
|
|
if(latestVersion > currentVersion) {
|
2019-10-14 15:04:26 -04:00
|
|
|
|
frmMain.Instance.BeginInvoke((MethodInvoker)(() => {
|
2019-03-14 12:34:29 -04:00
|
|
|
|
using(frmUpdatePrompt frmUpdate = new frmUpdatePrompt(currentVersion, latestVersion, changeLog, fileHash, donateText)) {
|
2019-10-14 15:04:26 -04:00
|
|
|
|
if(frmUpdate.ShowDialog(null, frmMain.Instance) == DialogResult.OK) {
|
|
|
|
|
frmMain.Instance.Close();
|
2019-03-14 12:34:29 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
} else if(!silent) {
|
|
|
|
|
MesenMsgBox.Show("MesenUpToDate", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch(Exception ex) {
|
|
|
|
|
if(!silent) {
|
|
|
|
|
MesenMsgBox.Show("ErrorWhileCheckingUpdates", MessageBoxButtons.OK, MessageBoxIcon.Error, ex.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|