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(); } }
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 }; }
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 }; } }
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); } }
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 }; }
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); } }
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 }; } }
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"] } }; }
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 }; }
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, }; }
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 }; }
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); } }
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 } }; }
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(); }
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, } } } ; } }
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" }; }
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 } }; }
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; }
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 }; }
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); }