Example #1
0
        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);
        }
Example #2
0
        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);
        }