Ejemplo n.º 1
0
        public override void Work()
        {
            string raw;

            using (var client = new WebClient())
            {
                client.Headers.Add("user-agent", Constants.WEB_USER_AGENT);

                try
                {
                    raw = client.DownloadString(Constants.UPDATE_REPO_URL);
                }
                catch (WebException ex)
                {
                    raw = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
                }
            }

            LatestReleaseData data = JsonConvert.DeserializeObject <LatestReleaseData>(raw);

            EventManager.Trigger_UpdateCheckDone(data);
        }
Ejemplo n.º 2
0
        public void OnUpdateCheckComplete(object sender, EventArgs args)
        {
            LatestReleaseData data = ((UpdateCheckDoneArgs)args).Data;
            bool isUpdating        = false;

            // Check our update data.
            if (data.message != null)
            {
                // If a message is set, it was some kind of error.
                Log.Write("NOT UPDATING: GitHub gave us an error -> " + data.message);
            }
            else
            {
                // Ensure our remote version number is not malformed.
                data.tag_name = data.tag_name.Trim(); // Trim any whitespace that might have slipped in.
                Regex versionCheck = new Regex(@"^\d+\.\d+\.\d+\.\d+$", RegexOptions.IgnoreCase);
                if (versionCheck.Match(data.tag_name).Success)
                {
                    Log.Write("Remote latest version: " + data.tag_name);

                    Version localVersion  = new Version(Program.Version);
                    Version remoteVersion = new Version(data.tag_name);

                    if (remoteVersion.CompareTo(localVersion) > 0)
                    {
                        if (data.assets.Length > 0)
                        {
                            // Local version is out-of-date, lets fix that.
                            isUpdating = true;
                            new RunnerDownloadUpdate(data.assets[0].browser_download_url).Begin();

                            UI_FirstRunText.Text = string.Format("Updating W3DT ({0} -> {1})...", localVersion, remoteVersion);
                            UI_FirstRunText.Show();
                        }
                        else
                        {
                            // Missing assets. Human error (most likely).
                            Log.Write("NOT UPDATING: Remote version has no assets attached!");
                        }
                    }
                    else
                    {
                        // Local version is equal to remote (or somehow newer).
                        Log.Write("NOT UPDATING: Local version is newer or equal to remote version.");
                    }
                }
                else
                {
                    // Version number is not valid, generally caused by human error.
                    Log.Write("NOT UPDATING: Remote version number is malformed -> " + data.tag_name);
                }
            }

            // There shouldn't be more than one event fired, but unregister anyway.
            EventManager.UpdateCheckDone -= OnUpdateCheckComplete;

            if (!isUpdating)
            {
                EventManager.Trigger_LoadStepDone();

                if (!Program.Settings.ShowSourceSelector)
                {
                    isDoneLoading = true;
                }

                isUpdateCheckDone = true;
            }
        }
Ejemplo n.º 3
0
 public UpdateCheckDoneArgs(LatestReleaseData data)
 {
     Data = data;
 }
Ejemplo n.º 4
0
 public static void Trigger_UpdateCheckDone(LatestReleaseData data)
 {
     TriggerEvent(_UpdateCheckDone, new UpdateCheckDoneArgs(data));
 }