/// <summary> /// Scans the update feed. /// </summary> /// <param name="result">The result.</param> private static void ScanUpdateFeed(SerializablePatch result) { Version currentVersion = Version.Parse(EveMonClient.FileVersionInfo.FileVersion); SerializableRelease newestRelease = result.Releases? .FirstOrDefault(release => Version.Parse(release.Version).Major == currentVersion.Major); Version newestVersion = newestRelease != null ? Version.Parse(newestRelease.Version) : currentVersion; Version mostRecentDeniedVersion = !String.IsNullOrEmpty(Settings.Updates.MostRecentDeniedUpgrade) ? new Version(Settings.Updates.MostRecentDeniedUpgrade) : new Version(); // Is the program out of date and user has not previously denied this version? if (currentVersion < newestVersion & mostRecentDeniedVersion < newestVersion) { // Reset the most recent denied version Settings.Updates.MostRecentDeniedUpgrade = String.Empty; Uri forumUrl = new Uri(result.Release.TopicAddress); Uri installerUrl = new Uri(result.Release.PatchAddress); string updateMessage = result.Release.Message; string installArgs = result.Release.InstallerArgs; string md5Sum = result.Release.MD5Sum; string additionalArgs = result.Release.AdditionalArgs; bool canAutoInstall = !String.IsNullOrEmpty(installerUrl.AbsoluteUri) && !String.IsNullOrEmpty(installArgs); if (!String.IsNullOrEmpty(additionalArgs) && additionalArgs.Contains("%EVEMON_EXECUTABLE_PATH%")) { string appPath = Path.GetDirectoryName(Application.ExecutablePath); installArgs = $"{installArgs} {additionalArgs}"; installArgs = installArgs.Replace("%EVEMON_EXECUTABLE_PATH%", appPath); } // Requests a notification to subscribers and quit EveMonClient.OnUpdateAvailable(forumUrl, installerUrl, updateMessage, currentVersion, newestVersion, md5Sum, canAutoInstall, installArgs); return; } // New data files released? if (result.FilesHaveChanged) { // Requests a notification to subscribers EveMonClient.OnDataUpdateAvailable(result.ChangedDatafiles); return; } //Notify about a new major version Version newestMajorVersion = result.Releases?.Max(release => Version.Parse(release.Version)) ?? new Version(); SerializableRelease newestMajorRelease = result.Releases? .FirstOrDefault(release => Version.Parse(release.Version) == newestMajorVersion); if (newestMajorRelease == null) return; newestVersion = Version.Parse(newestMajorRelease.Version); Version mostRecentDeniedMajorUpgrade = !String.IsNullOrEmpty(Settings.Updates.MostRecentDeniedMajorUpgrade) ? new Version(Settings.Updates.MostRecentDeniedMajorUpgrade) : new Version(); // Is there is a new major version and the user has not previously denied it? if (currentVersion >= newestVersion | mostRecentDeniedMajorUpgrade >= newestVersion) return; // Reset the most recent denied version Settings.Updates.MostRecentDeniedMajorUpgrade = String.Empty; EveMonClient.OnUpdateAvailable(null, null, null, currentVersion, newestVersion, null, false, null); }
/// <summary> /// Serializes the patch file to string. /// </summary> /// <returns></returns> private string ExportPatchXml() { SerializablePatch serial = new SerializablePatch(); ExportRelease(serial.Release); ExportReleases(serial.Releases); ExportDatafiles(serial.Datafiles); XmlDocument doc = (XmlDocument)Util.SerializeToXmlDocument(serial); return doc != null ? Util.GetXmlStringRepresentation(doc) : String.Empty; }