mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-09 20:57:22 +02:00
Use own update manager, so we can pass proxy #1266
This commit is contained in:
@@ -1,10 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using Squirrel;
|
using Squirrel;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using Wox.Core.Resource;
|
using Wox.Core.Resource;
|
||||||
using Wox.Infrastructure;
|
using Wox.Infrastructure;
|
||||||
using Wox.Infrastructure.Http;
|
using Wox.Infrastructure.Http;
|
||||||
@@ -16,14 +19,9 @@ namespace Wox.Core
|
|||||||
{
|
{
|
||||||
public static async Task UpdateApp()
|
public static async Task UpdateApp()
|
||||||
{
|
{
|
||||||
|
|
||||||
var c = new WebClient { Proxy = Http.WebProxy() };
|
|
||||||
var d = new FileDownloader(c);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
const string url = Constant.Github;
|
using (var m = await GitHubUpdateManager(Constant.Repository))
|
||||||
using (var m = await UpdateManager.GitHubUpdateManager(url, urlDownloader: d))
|
|
||||||
{
|
{
|
||||||
// UpdateApp CheckForUpdate will return value only if the app is squirrel installed
|
// UpdateApp CheckForUpdate will return value only if the app is squirrel installed
|
||||||
var e = await m.CheckForUpdate().NonNull();
|
var e = await m.CheckForUpdate().NonNull();
|
||||||
@@ -45,7 +43,6 @@ namespace Wox.Core
|
|||||||
catch (Exception e) when (e is HttpRequestException || e is WebException || e is SocketException)
|
catch (Exception e) when (e is HttpRequestException || e is WebException || e is SocketException)
|
||||||
{
|
{
|
||||||
Log.Exception("|Updater.UpdateApp|Network error", e);
|
Log.Exception("|Updater.UpdateApp|Network error", e);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -68,5 +65,36 @@ namespace Wox.Core
|
|||||||
return tips;
|
return tips;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class GithubRelease
|
||||||
|
{
|
||||||
|
[JsonProperty("prerelease")]
|
||||||
|
public bool Prerelease { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("published_at")]
|
||||||
|
public DateTime PublishedAt { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("html_url")]
|
||||||
|
public string HtmlUrl { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// https://github.com/Squirrel/Squirrel.Windows/blob/master/src/Squirrel/UpdateManager.Factory.cs
|
||||||
|
private static async Task<UpdateManager> GitHubUpdateManager(string repository)
|
||||||
|
{
|
||||||
|
var uri = new Uri(repository);
|
||||||
|
var api = $"https://api.github.com/{uri.AbsolutePath}/releases";
|
||||||
|
|
||||||
|
var json = await Http.Get(api);
|
||||||
|
|
||||||
|
var releases = JsonConvert.DeserializeObject<List<GithubRelease>>(json);
|
||||||
|
var latest = releases.Where(r => r.Prerelease).OrderByDescending(r => r.PublishedAt).First();
|
||||||
|
var latestUrl = latest.HtmlUrl.Replace("/tag/", "/download/");
|
||||||
|
|
||||||
|
var client = new WebClient { Proxy = Http.WebProxy() };
|
||||||
|
var downloader = new FileDownloader(client);
|
||||||
|
|
||||||
|
var manager = new UpdateManager(latestUrl, urlDownloader: downloader);
|
||||||
|
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ namespace Wox.Infrastructure
|
|||||||
public static readonly string DataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Wox);
|
public static readonly string DataDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Wox);
|
||||||
public static readonly string PluginsDirectory = Path.Combine(DataDirectory, Plugins);
|
public static readonly string PluginsDirectory = Path.Combine(DataDirectory, Plugins);
|
||||||
public static readonly string PreinstalledDirectory = Path.Combine(ProgramDirectory, Plugins);
|
public static readonly string PreinstalledDirectory = Path.Combine(ProgramDirectory, Plugins);
|
||||||
public const string Github = "https://github.com/Wox-launcher/Wox";
|
public const string Repository = "https://github.com/Wox-launcher/Wox";
|
||||||
public const string Issue = "https://github.com/Wox-launcher/Wox/issues/new";
|
public const string Issue = "https://github.com/Wox-launcher/Wox/issues/new";
|
||||||
public static readonly string Version = FileVersionInfo.GetVersionInfo(Assembly.Location).ProductVersion;
|
public static readonly string Version = FileVersionInfo.GetVersionInfo(Assembly.Location).ProductVersion;
|
||||||
|
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ namespace Wox
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Infrastructure.Constant.Github);
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Infrastructure.Constant.Repository);
|
||||||
if (string.IsNullOrEmpty(_settings.Proxy.UserName) || string.IsNullOrEmpty(_settings.Proxy.Password))
|
if (string.IsNullOrEmpty(_settings.Proxy.UserName) || string.IsNullOrEmpty(_settings.Proxy.Password))
|
||||||
{
|
{
|
||||||
request.Proxy = new WebProxy(_settings.Proxy.Server, _settings.Proxy.Port);
|
request.Proxy = new WebProxy(_settings.Proxy.Server, _settings.Proxy.Port);
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ namespace Wox.ViewModel
|
|||||||
},
|
},
|
||||||
new Result
|
new Result
|
||||||
{
|
{
|
||||||
Title = $"Open Source: {Constant.Github}",
|
Title = $"Open Source: {Constant.Repository}",
|
||||||
SubTitle = "Please star it!"
|
SubTitle = "Please star it!"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -316,7 +316,7 @@ namespace Wox.ViewModel
|
|||||||
|
|
||||||
#region about
|
#region about
|
||||||
|
|
||||||
public static string Github => Constant.Github;
|
public static string Github => Constant.Repository;
|
||||||
public static string ReleaseNotes => @"https://github.com/Wox-launcher/Wox/releases/latest";
|
public static string ReleaseNotes => @"https://github.com/Wox-launcher/Wox/releases/latest";
|
||||||
public static string Version => Constant.Version;
|
public static string Version => Constant.Version;
|
||||||
public string ActivatedTimes => string.Format(_translater.GetTranslation("about_activate_times"), Settings.ActivateTimes);
|
public string ActivatedTimes => string.Format(_translater.GetTranslation("about_activate_times"), Settings.ActivateTimes);
|
||||||
|
|||||||
Reference in New Issue
Block a user