86 lines
3.4 KiB
C#
86 lines
3.4 KiB
C#
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Reflection;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows.Forms;
|
|
|
|
using static mpvnet.Global;
|
|
|
|
namespace mpvnet
|
|
{
|
|
class UpdateCheck
|
|
{
|
|
public static void DailyCheck()
|
|
{
|
|
if (App.UpdateCheck && App.Settings.LastUpdateCheck != DateTime.Now.DayOfYear)
|
|
CheckOnline();
|
|
}
|
|
|
|
public static async void CheckOnline(bool showUpToDateMessage = false)
|
|
{
|
|
try
|
|
{
|
|
using (HttpClient client = new HttpClient())
|
|
{
|
|
App.Settings.LastUpdateCheck = DateTime.Now.DayOfYear;
|
|
client.DefaultRequestHeaders.Add("User-Agent", "mpv.net");
|
|
var response = await client.GetAsync("https://api.github.com/repos/stax76/mpv.net/releases/latest");
|
|
response.EnsureSuccessStatusCode();
|
|
string content = await response.Content.ReadAsStringAsync();
|
|
Match match = Regex.Match(content, @"""mpv\.net-([\d\.]+)-portable\.zip""");
|
|
|
|
if (!match.Success)
|
|
{
|
|
App.InvokeOnMainThread(() => App.ShowError("Update check is currently not available."));
|
|
return;
|
|
}
|
|
|
|
Version onlineVersion = Version.Parse(match.Groups[1].Value);
|
|
Version currentVersion = Assembly.GetEntryAssembly().GetName().Version;
|
|
|
|
if (onlineVersion <= currentVersion)
|
|
{
|
|
if (showUpToDateMessage)
|
|
App.InvokeOnMainThread(() => Msg.ShowInfo($"{Application.ProductName} is up to date."));
|
|
|
|
return;
|
|
}
|
|
|
|
if ((App.Settings.UpdateCheckVersion != onlineVersion.ToString() ||
|
|
showUpToDateMessage) && Msg.ShowQuestion(
|
|
$"New version {onlineVersion} is available, update now?") ==
|
|
System.Windows.MessageBoxResult.OK)
|
|
{
|
|
string url = $"https://github.com/stax76/mpv.net/releases/download/{onlineVersion}/mpv.net-{onlineVersion}-portable.zip";
|
|
|
|
using (Process proc = new Process())
|
|
{
|
|
proc.StartInfo.UseShellExecute = true;
|
|
proc.StartInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
|
proc.StartInfo.FileName = "powershell.exe";
|
|
proc.StartInfo.Arguments = $"-NoExit -NoProfile -ExecutionPolicy Bypass -File \"{Folder.Startup + "Setup\\update.ps1"}\" \"{url}\" \"{Folder.Startup.TrimEnd(Path.DirectorySeparatorChar)}\"";
|
|
|
|
if (Folder.Startup.Contains("Program Files"))
|
|
proc.StartInfo.Verb = "runas";
|
|
|
|
proc.Start();
|
|
}
|
|
|
|
Core.Command("quit");
|
|
}
|
|
|
|
App.Settings.UpdateCheckVersion = onlineVersion.ToString();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (showUpToDateMessage)
|
|
App.ShowException(ex);
|
|
}
|
|
}
|
|
}
|
|
}
|