public override void CheckUpdate() { UpdateInfo = new UpdateInfo { CurrentVersion = this.CurrentVersion, ReleaseChannel = ReleaseType }; try { using (WebClient wc = new WebClient()) { wc.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); wc.Headers.Add("user-agent", "ShareX"); wc.Proxy = Proxy; using (MemoryStream ms = new MemoryStream(wc.DownloadData(URL))) using (XmlTextReader xml = new XmlTextReader(ms)) { XDocument xd = XDocument.Load(xml); if (xd != null) { string node; switch (ReleaseType) { default: case ReleaseChannelType.Stable: node = "Stable"; break; case ReleaseChannelType.Beta: node = "Beta|Stable"; break; case ReleaseChannelType.Dev: node = "Dev|Beta|Stable"; break; } string path = string.Format("Update/{0}/{1}", ApplicationName, node); XElement xe = xd.GetNode(path); if (xe != null) { UpdateInfo.LatestVersion = new Version(xe.Element("Version").Value); UpdateInfo.DownloadURL = xe.Element("URL").Value; UpdateInfo.RefreshStatus(); return; } } } } } catch (Exception e) { DebugHelper.WriteException(e, "Update check failed"); } UpdateInfo.Status = UpdateStatus.UpdateCheckFailed; }
public override void CheckUpdate() { UpdateInfo = new UpdateInfo { CurrentVersion = this.CurrentVersion }; try { List <GitHubRelease> releases = GetReleases(); if (releases != null && releases.Count > 0) { GitHubRelease latestRelease = releases[0]; if (latestRelease != null && !string.IsNullOrEmpty(latestRelease.tag_name) && latestRelease.tag_name.Length > 1 && latestRelease.tag_name[0] == 'v') { UpdateInfo.LatestVersion = new Version(latestRelease.tag_name.Substring(1)); if (latestRelease.assets != null && latestRelease.assets.Count > 0) { foreach (GitHubAsset asset in latestRelease.assets) { if (asset != null && !string.IsNullOrEmpty(asset.name) && asset.name.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase)) { UpdateInfo.Filename = asset.name; UpdateInfo.DownloadURL = asset.url; UpdateInfo.RefreshStatus(); return; } } } } } } catch (Exception e) { DebugHelper.WriteException(e, "Update check failed"); } UpdateInfo.Status = UpdateStatus.UpdateCheckFailed; }
public override void CheckUpdate() { UpdateInfo = new UpdateInfo { CurrentVersion = this.CurrentVersion }; try { List<GitHubRelease> releases = GetReleases(); if (releases != null && releases.Count > 0) { GitHubRelease latestRelease = releases[0]; if (latestRelease != null && !string.IsNullOrEmpty(latestRelease.tag_name) && latestRelease.tag_name.Length > 1 && latestRelease.tag_name[0] == 'v') { UpdateInfo.LatestVersion = new Version(latestRelease.tag_name.Substring(1)); if (latestRelease.assets != null && latestRelease.assets.Count > 0) { foreach (GitHubAsset asset in latestRelease.assets) { if (asset != null && !string.IsNullOrEmpty(asset.name) && asset.name.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase)) { UpdateInfo.Filename = asset.name; UpdateInfo.DownloadURL = asset.url; UpdateInfo.RefreshStatus(); return; } } } } } } catch (Exception e) { DebugHelper.WriteException(e, "GitHub update check failed"); } UpdateInfo.Status = UpdateStatus.UpdateCheckFailed; }