private void OnUpdateVersionRequested(object sender, OpenReadCompletedEventArgs e) { if (null == e || e.Error != null) { string errorMessage = "Unspecified error"; if (null != e && (null != e.Error)) { errorMessage = e.Error.Message; } logger.LogError("UpdateManager-OnUpdateVersionRequested", string.Format("Request failure: {0}", errorMessage)); versionCheckInProgress = false; return; } List <string> versionInfo = new List <string>(); using (StreamReader streamReader = new StreamReader(e.Result)) { string line; while (!string.IsNullOrEmpty(line = streamReader.ReadLine())) { versionInfo.Add(line); } } if (versionInfo.Count != 3) { versionCheckInProgress = false; return; } updateInfo = new AppVersionInfo() { Version = BinaryVersion.FromString(versionInfo[0]), VersionInfoURL = versionInfo[1], InstallerURL = versionInfo[2] }; logger.LogInfo("UpdateManager-OnUpdateVersionRequested", string.Format("Product Version: {0} Available Version : {1}", ProductVersion.ToString(), AvailableVersion.ToString())); if (updateInfo.Value.Version <= this.ProductVersion) { versionCheckInProgress = false; return; // Up-to-date, no download required. } DownloadUpdatePackage(updateInfo.Value.InstallerURL, updateInfo.Value.Version); }
public static async Task<AvailableVersion> GetLatestAvailableVersion() { AvailableVersion result = new AvailableVersion(); try { string jsonString; using (var client = new WebClient()) { jsonString = await client.DownloadStringTaskAsync(Config.Default.AvailableVersionUrl); } JObject query = JObject.Parse(jsonString); var availableVersion = query.SelectToken("current"); var upcomingVersion = query.SelectToken("upcoming.version"); var upcomingStatus = query.SelectToken("upcoming.status"); if (availableVersion != null) { Version ver; string versionString = availableVersion.ToString(); if(versionString.IndexOf('.') == -1) { versionString = versionString + ".0"; } result.IsValid = Version.TryParse(versionString, out ver); result.Current = ver; } if (upcomingVersion != null) { Version ver; string versionString = upcomingVersion.ToString(); if (versionString.IndexOf('.') == -1) { versionString = versionString + ".0"; } Version.TryParse(versionString, out ver); result.Upcoming = ver; } if (upcomingStatus != null) { result.UpcomingETA = (string)upcomingStatus; } } catch (Exception ex) { logger.Debug(String.Format("Exception checking for version: {0}\r\n{1}", ex.Message, ex.StackTrace)); } return result; }
public static async Task <AvailableVersion> GetLatestAvailableVersion() { AvailableVersion result = new AvailableVersion(); try { string jsonString; using (var client = new WebClient()) { jsonString = await client.DownloadStringTaskAsync(Config.Default.AvailableVersionUrl); } JObject query = JObject.Parse(jsonString); var availableVersion = Convert.ToString(query.SelectToken("current"), CultureInfo.GetCultureInfo("en-US")); var upcomingVersion = Convert.ToString(query.SelectToken("upcoming.version"), CultureInfo.GetCultureInfo("en-US")); var upcomingStatus = query.SelectToken("upcoming.status"); if (availableVersion != null) { Version ver; string versionString = availableVersion.ToString(); if (versionString.IndexOf('.') == -1) { versionString = versionString + ".0"; } result.IsValid = Version.TryParse(versionString, out ver); result.Current = ver; } if (upcomingVersion != null) { Version ver; string versionString = upcomingVersion.ToString(); if (versionString.IndexOf('.') == -1) { versionString = versionString + ".0"; } Version.TryParse(versionString, out ver); result.Upcoming = ver; } if (upcomingStatus != null) { result.UpcomingETA = upcomingStatus.ToString(); } // if successful then exist here and return the result return(result); } catch (Exception ex) { logger.Debug(String.Format("Exception checking for version (method 1): {0}\r\n{1}", ex.Message, ex.StackTrace)); } try { string webString; using (var client = new WebClient()) { webString = await client.DownloadStringTaskAsync(Config.Default.AvailableVersionUrl2); } if (!string.IsNullOrWhiteSpace(webString)) { Version ver; string versionString = webString.ToString(); if (versionString.IndexOf('.') == -1) { versionString = versionString + ".0"; } result.IsValid = Version.TryParse(versionString, out ver); result.Current = ver; } } catch (Exception ex) { logger.Debug(String.Format("Exception checking for version (method 2): {0}\r\n{1}", ex.Message, ex.StackTrace)); } return(result); }