Пример #1
0
 private static void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
 {
     try
     {
         args.UpdateInfo = GetUpdateInfo(args.RemoteData);
     }
     catch (Exception e)
     {
         Log.Verbose(e, "Error while checking for updates");
         args.UpdateInfo = new UpdateInfoEventArgs();
     }
 }
Пример #2
0
        private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            dynamic json = JsonConvert.DeserializeObject(args.RemoteData);

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = json.version,
                ChangelogURL   = json.changelog,
                Mandatory      = json.mandatory,
                DownloadURL    = json.url
            };
        }
Пример #3
0
 private void ParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
 {
     _infos = JsonConvert.DeserializeObject <Info>(args.RemoteData);
     if (_infos != null)
     {
         args.UpdateInfo = new UpdateInfoEventArgs
         {
             CurrentVersion = _infos.Version,
             ChangelogURL   = _infos.ChangelogUrl,
             DownloadURL    = _infos.DownloadUrl
         };
     }
 }
Пример #4
0
      private static void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
      {
          // Default data in case of problem
          args.UpdateInfo = new UpdateInfoEventArgs
          {
              Mandatory        = false,
              InstalledVersion = Assembly.GetExecutingAssembly().GetName().Version,
              CurrentVersion   = Assembly.GetExecutingAssembly().GetName().Version,
          };

          Logger.Log($"Updater: Currently running on version {args.UpdateInfo.InstalledVersion}");
          Logger.Log("Updater: AutoUpdaterOnParseUpdateInfoEvent");
          // Get latest version
          String currentVersionLine =
              args.RemoteData.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None) // Assembly.cs split by line
              .Where(l => l.StartsWith("[assembly: AssemblyVersion"))                      // Find the correct line
              .FirstOrDefault();

          // This can happen if the above string doesnt match or github changes their url structure
          // Or public wifi or something along those lines
          if (currentVersionLine == null)
          {
              // Pretend that latest version is current version, warn user
              Logger.Log("Updater: Failed to load version info. You need to update manually.", Logger.Status.Error, true);
              Logger.Log("Updater: Returned text:" + Environment.NewLine + args.RemoteData);
              return;
          }

          // Grab version
          Logger.Log("Updater: Version line found. Attempting to parse latest version.");
          try
          {
              Regex   rVersion      = new Regex("AssemblyVersion\\(\"(\\S+)\"\\)");
              Version latestVersion = Version.Parse(rVersion.Match(currentVersionLine).Groups[1].Value);

              // Set update info
              args.UpdateInfo = new UpdateInfoEventArgs
              {
                  Mandatory        = false,
                  InstalledVersion = Assembly.GetExecutingAssembly().GetName().Version,
                  CurrentVersion   = latestVersion,
                  ChangelogURL     = "https://github.com/NotCoffee418/TrinityCreator/commits/master#branch-select-menu",
                  DownloadURL      = "https://github.com/NotCoffee418/TrinityCreator/raw/master/TrinityCreator/bin/Publish/TrinityCreator.zip"
              };
              Logger.Log($"Updater: Latest version is {args.UpdateInfo.CurrentVersion}. Installed version is {args.UpdateInfo.InstalledVersion}.");
          }
          catch
          {
              Logger.Log("Updater: Failed to parse version data. You may have to update manually.", Logger.Status.Error, true);
          }
      }
Пример #5
0
        private void AutoUpdateOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            // Use JSON format for AutoUpdate release inforrmatin file
            dynamic json = JsonConvert.DeserializeObject(args.RemoteData);

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = json.version,
                ChangelogURL   = json.changelog,
                Mandatory      = json.mandatory,
                DownloadURL    = json.url,
                Checksum       = json.checksum
            };
        }
Пример #6
0
 private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
 {
     try {
         dynamic json = JsonConvert.DeserializeObject(args.RemoteData);
         args.UpdateInfo = new UpdateInfoEventArgs {
             CurrentVersion = json.version,
             ChangelogURL   = json.changelog,
             Mandatory      = json.mandatory,
             DownloadURL    = json.url
         };
     }
     catch (Exception ex) {
         Console.WriteLine(ex.Message);
     }
 }
Пример #7
0
        private static void ParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            CdnResponse json = JsonConvert.DeserializeObject <CdnResponse>(args.RemoteData);

            if (json != null)
            {
                args.UpdateInfo = new UpdateInfoEventArgs
                {
                    CurrentVersion = json.Updater.Version,
                    ChangelogURL   = json.Updater.Changelog,
                    DownloadURL    = json.Updater.Url,
                    Mandatory      = json.Updater.Mandatory
                };
            }
        }
Пример #8
0
        void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            dynamic json = JsonConvert.DeserializeObject(args.RemoteData);

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = json["version"],
                ChangelogURL   = json["changelog"],
                DownloadURL    = json["url"],
                Mandatory      = new Mandatory
                {
                    Value          = json["mandatory"]["value"],
                    UpdateMode     = json["mandatory"]["UpdateMode"],
                    MinimumVersion = json["mandatory"]["MinimumVersion"]
                }
            };
        }
Пример #9
0
        private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            var json = (JArray)JsonConvert.DeserializeObject(args.RemoteData);

            Func <string, string> GetVersionFromTag = (tag) => { return(tag.Remove(0, tag.IndexOf('v') + 1)); };

            var CurrentVersion = new Version(GetVersionFromTag(((JValue)json[0]["tag_name"]).Value as string));
            var ChangelogUrl   = string.Empty;
            var DownloadUrl    = ((JValue)json[0]["assets"][0]["browser_download_url"]).Value as string;

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = CurrentVersion,
                ChangelogURL   = ChangelogUrl,
                Mandatory      = false,
                DownloadURL    = DownloadUrl
            };
        }
Пример #10
0
        void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            rawUpdateInfo = JsonConvert
                            .DeserializeObject <Models.Datas.UpdateInfo>(
                args.RemoteData);

            var url = string.Format(
                VgcApis.Models.Consts.Webs.ReleaseDownloadUrlTpl,
                Misc.Utils.TrimVersionString(rawUpdateInfo.version));

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion   = new Version(rawUpdateInfo.version),
                Mandatory        = false,
                DownloadURL      = url,
                HashingAlgorithm = "MD5",
                Checksum         = rawUpdateInfo.md5,
            };
        }
Пример #11
0
        private static void AutoUpdater_ParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            GitHubClient client = new GitHubClient(new ProductHeaderValue("workspacer"));

            bool isStable = _branch == Branch.Stable;

            Release release = isStable
                ? client.Repository.Release.GetLatest("workspacer", "workspacer").Result
                : client.Repository.Release.Get("workspacer", "workspacer", "unstable").Result;

            string currentVersion = release.Name.Split(' ').Skip(1).FirstOrDefault();

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = currentVersion,
                ChangelogURL   = isStable ? "https://www.workspacer.org/changelog" : "https://github.com/workspacer/workspacer/releases/unstable",
                DownloadURL    = release.Assets.First(a => a.Name == $"workspacer-{_branch.ToString()?.ToLower()}-{(isStable ? currentVersion : "latest")}.zip").BrowserDownloadUrl
            };
        }
Пример #12
0
        private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            try
            {
                ChangelogText = $"\nChangelog{Environment.NewLine}";

                using (StringReader txtReader = new StringReader(args.RemoteData))
                {
                    XmlSerializer xmls = new XmlSerializer(typeof(UpdaterArgs));

                    if (xmls.Deserialize(txtReader) is UpdaterArgs updaterArgs)
                    {
                        args.UpdateInfo = new UpdateInfoEventArgs
                        {
                            CurrentVersion = updaterArgs.Version,
                            DownloadURL    = updaterArgs.Url,
                            ChangelogURL   = updaterArgs.Changelog,
                            Mandatory      = new Mandatory
                            {
                                Value      = manual,
                                UpdateMode = Mode.Normal
                            },
                            CheckSum = new CheckSum
                            {
                                Value            = updaterArgs.Checksum.Value,
                                HashingAlgorithm = updaterArgs.Checksum.algorithm
                            }
                        };

                        foreach (string change in updaterArgs.Changes)
                        {
                            ChangelogText += $" - {change}{Environment.NewLine}";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Пример #13
0
        private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            dynamic json = JsonConvert.DeserializeObject(args.RemoteData);

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = json.version,
                ChangelogURL   = json.changelog,
                DownloadURL    = json.url,
                Mandatory      = new Mandatory
                {
                    Value      = json.mandatory.value,
                    UpdateMode = json.mandatory.mode
                },
                CheckSum = new CheckSum
                {
                    Value            = json.checksum.value,
                    HashingAlgorithm = json.checksum.hashingAlgorithm
                }
            };
        }
Пример #14
0
        private void AutoUpdater_ParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            var allUpdates = _jsonManager.DeserializeUpdates(args.RemoteData);

            var applicableUpdates = allUpdates.Where(u => Version.TryParse(u.CurrentVersion, out _)).Where(au =>
                                                                                                           new Version(au.CurrentVersion) > Assembly.GetEntryAssembly().GetName().Version).ToList(); // TODO we should check the same as we display in main Window (Title)

            // TODO handle exception in Autoupdater, that is caused by null in args.UpdateInfo

            if (!applicableUpdates.Any())
            {
                return;
            }

            if (applicableUpdates.Count > 1)
            {
                _dialogService.ShowMessage($"Bylo nalezeno {applicableUpdates.Count} kumulativnich aktualizaci, budou nainstalovany postupne.");
            }

            args.UpdateInfo = applicableUpdates.OrderBy(a => new Version(a.CurrentVersion)).First();
        }
Пример #15
0
    private static void OnParseUpdateInfo(ParseUpdateInfoEventArgs args)
    {
        dynamic json = JsonConvert.DeserializeObject(args.RemoteData);

        if (json != null)
        {
            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = json.tag_name,
                ChangelogURL   = json.html_url,
                DownloadURL    = json.assets[0].browser_download_url,
                Mandatory      = new Mandatory
                {
                    Value      = true,
                    UpdateMode = Mode.Forced,
                }
            }
        }
        ;
    }
}
Пример #16
0
      private static void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
      {
          // Get latest version
          string currentVersionLine =
              args.RemoteData.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None) // Assembly.cs split by line
              .Where(l => l.StartsWith("[assembly: AssemblyVersion"))                      // Find the correct line
              .FirstOrDefault();

          // Grab version
          Regex   rVersion      = new Regex("AssemblyVersion\\(\"(\\S+)\"\\)");
          Version latestVersion = Version.Parse(rVersion.Match(currentVersionLine).Groups[1].Value);

          // Set update info
          args.UpdateInfo = new UpdateInfoEventArgs
          {
              Mandatory        = false,
              InstalledVersion = Assembly.GetExecutingAssembly().GetName().Version,
              CurrentVersion   = latestVersion,
              ChangelogURL     = "https://github.com/NotCoffee418/TrinityCreator/commits/master#branch-select-menu",
              DownloadURL      = "https://github.com/NotCoffee418/TrinityCreator/raw/master/TrinityCreator/bin/Publish/TrinityCreator.zip"
          };
      }
Пример #17
0
        static void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            var json = System.Text.Json.JsonSerializer.Deserialize <UpdateInfoEventArgs>(args.RemoteData);

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = json.CurrentVersion,
                ChangelogURL   = json.ChangelogURL,
                DownloadURL    = json.DownloadURL,
                Mandatory      = new Mandatory
                {
                    Value = json.Mandatory.Value,
                    //UpdateMode = json.mandatory.mode,
                    MinimumVersion = json.Mandatory.MinimumVersion
                },
                CheckSum = new CheckSum
                {
                    Value            = json.CheckSum.Value,
                    HashingAlgorithm = json.CheckSum.HashingAlgorithm
                }
            };
        }
Пример #18
0
        static void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            logger.Debug("RemoteData(JSON/XML): " + Environment.NewLine + args.RemoteData);
            JsonParsedUpdaterData      = JsonConvert.DeserializeObject <UpdaterData>(args.RemoteData);
            JsonParsedUpdaterDataReady = true;
            args.UpdateInfo            = new UpdateInfoEventArgs
            {
                CurrentVersion = JsonParsedUpdaterData.Version,
                ChangelogURL   = JsonParsedUpdaterData.ChangelogURL,
                Mandatory      = JsonParsedUpdaterData.Mandatory,
#if !DEBUG
                DownloadURL = JsonParsedUpdaterData.DownloadURL,
#else
                DownloadURL = Strings.Updater_Download_URL_ZIP_LOCAL,
#endif
                Checksum         = JsonParsedUpdaterData.Checksum.Value,
                HashingAlgorithm = JsonParsedUpdaterData.Checksum.Type.ToString(),
                InstallerArgs    = JsonParsedUpdaterData.CommandLineArguments,
                UpdateMode       = JsonParsedUpdaterData.UpdateMode
            };

            AutoUpdater.Mandatory  = args.UpdateInfo.Mandatory;
            AutoUpdater.UpdateMode = args.UpdateInfo.UpdateMode;
        }
Пример #19
0
        private void AutoUpdaterOnParseUpdateInfoEvent(ParseUpdateInfoEventArgs args)
        {
            dynamic json = JsonConvert.DeserializeObject(args.RemoteData);

            string VersionGitHub = json.tag_name; // Version Number - Change this to tag_name on deployment

            string AssetDownloadURL = "";

            VersionGitHub = (VersionGitHub.Remove(0, 1)); // Remove "v" from beginning
            Version v = new Version(VersionGitHub);       // Conver to Version

            foreach (var assets in json.assets)
            {
                AssetDownloadURL = assets.browser_download_url;
            }

            args.UpdateInfo = new UpdateInfoEventArgs
            {
                CurrentVersion = v,
                ChangelogURL   = json.body,
                //Mandatory = json.mandatory,
                DownloadURL = AssetDownloadURL
            };
        }
Пример #20
0
        private static object CheckUpdate(Assembly mainAssembly)
        {
            var companyAttribute =
                (AssemblyCompanyAttribute)AssemblyHelper.GetAttribute(mainAssembly, typeof(AssemblyCompanyAttribute));
            string appCompany = companyAttribute != null ? companyAttribute.Company : "";

            if (string.IsNullOrEmpty(AppTitle))
            {
                var titleAttribute =
                    (AssemblyTitleAttribute)AssemblyHelper.GetAttribute(mainAssembly, typeof(AssemblyTitleAttribute));
                AppTitle = titleAttribute != null ? titleAttribute.Title : mainAssembly.GetName().Name;
            }

            string registryLocation = !string.IsNullOrEmpty(appCompany)
                ? $@"Software\{appCompany}\{AppTitle}\AutoUpdater"
                : $@"Software\{AppTitle}\AutoUpdater";

            if (PersistenceProvider == null)
            {
                PersistenceProvider = new RegistryPersistenceProvider(registryLocation);
            }

            BaseUri = new Uri(AppCastURL);

            UpdateInfoEventArgs args;

            using (MyWebClient client = GetWebClient(BaseUri, BasicAuthXML))
            {
                string xml = client.DownloadString(BaseUri);

                if (ParseUpdateInfoEvent == null)
                {
                    //XmlSerializer xmlSerializer = new XmlSerializer(typeof(UpdateInfoEventArgs));
                    //XmlTextReader xmlTextReader = new XmlTextReader(new StringReader(xml)) { XmlResolver = null };
                    //args = (UpdateInfoEventArgs)xmlSerializer.Deserialize(xmlTextReader);
                    ParseUpdateInfoEventArgs parseArgs = new ParseUpdateInfoEventArgs(xml);
                    AutoUpdaterOnParseUpdateInfoEvent(parseArgs);
                    args = parseArgs.UpdateInfo;
                }
                else
                {
                    ParseUpdateInfoEventArgs parseArgs = new ParseUpdateInfoEventArgs(xml);
                    ParseUpdateInfoEvent(parseArgs);
                    args = parseArgs.UpdateInfo;
                }
            }

            if (string.IsNullOrEmpty(args.CurrentVersion) || string.IsNullOrEmpty(args.DownloadURL))
            {
                throw new MissingFieldException();
            }

            args.InstalledVersion  = mainAssembly.GetName().Version;
            args.IsUpdateAvailable = new Version(args.CurrentVersion) > mainAssembly.GetName().Version;

            if (!Mandatory)
            {
                if (string.IsNullOrEmpty(args.Mandatory.MinimumVersion) ||
                    args.InstalledVersion < new Version(args.Mandatory.MinimumVersion))
                {
                    Mandatory = args.Mandatory.Value;
                }
            }

            if (Mandatory)
            {
                ShowRemindLaterButton = false;
                ShowSkipButton        = false;
            }
            else
            {
                // Read the persisted state from the persistence provider. This method makes the persistence handling independent from the storage method.
                var skippedVersion = PersistenceProvider.GetSkippedVersion();
                if (skippedVersion != null)
                {
                    var currentVersion = new Version(args.CurrentVersion);
                    if (currentVersion <= skippedVersion)
                    {
                        return(null);
                    }

                    if (currentVersion > skippedVersion)
                    {
                        // Update the persisted state. Its no longer makes sense to have this flag set as we are working on a newer application version.
                        PersistenceProvider.SetSkippedVersion(null);
                    }
                }

                var remindLaterAt = PersistenceProvider.GetRemindLater();
                if (remindLaterAt != null)
                {
                    int compareResult = DateTime.Compare(DateTime.Now, remindLaterAt.Value);

                    if (compareResult < 0)
                    {
                        return(remindLaterAt.Value);
                    }
                }
            }

            return(args);
        }