diff --git a/Greenshot/Helpers/UpdateHelper.cs b/Greenshot/Helpers/UpdateHelper.cs index a0b209d7e..87efc6894 100644 --- a/Greenshot/Helpers/UpdateHelper.cs +++ b/Greenshot/Helpers/UpdateHelper.cs @@ -125,17 +125,34 @@ namespace Greenshot.Experimental { SourceforgeFile rssFile = rssFiles[fileType][file]; if (fileType.StartsWith("Greenshot")) { // check for exe - if (rssFile.File == null || !rssFile.File.EndsWith(".exe")) { - continue; - } - // Check if non stable - if (!conf.CheckUnstable && rssFile.File.ToLower().Contains("unstable")) { + if (!rssFile.isExe) { continue; } + + // do we have a version? if (rssFile.Version == null) { - LOG.DebugFormat("Skipping unversioned exe {0} with published at {1} : {2}", file, rssFile.Pubdate.ToLocalTime(), rssFile.Link); + LOG.DebugFormat("Skipping unversioned exe {0} which is published at {1} : {2}", file, rssFile.Pubdate.ToLocalTime(), rssFile.Link); continue; } + + // if the file is unstable, we will skip it when: + // the current version is a release or release candidate AND check unstable is turned off. + if (rssFile.isUnstable) { + // Skip if we shouldn't check unstables + if ((conf.isRelease || conf.isReleaseCandidate) && !conf.CheckUnstable) { + continue; + } + } + + // if the file is a release candidate, we will skip it when: + // the current version is a release AND check unstable is turned off. + if (rssFile.isReleaseCandidate) { + if (conf.isRelease && !conf.CheckUnstable) { + continue; + } + } + + // Compare versions int versionCompare = rssFile.Version.CompareTo(currentVersion); if (versionCompare > 0) { LOG.DebugFormat("Found newer version as exe {0} with version {1} published at {2} : {3}", file, rssFile.Version, rssFile.Pubdate.ToLocalTime(), rssFile.Link); diff --git a/GreenshotPlugin/Core/CoreConfiguration.cs b/GreenshotPlugin/Core/CoreConfiguration.cs index 966e8aee1..96591f3c7 100644 --- a/GreenshotPlugin/Core/CoreConfiguration.cs +++ b/GreenshotPlugin/Core/CoreConfiguration.cs @@ -190,7 +190,12 @@ namespace GreenshotPlugin.Core { [IniProperty("ExperimentalFeatures", Description="A list of experimental features, this allows us to test certain features before releasing them.", ExcludeIfNull=true)] public List ExperimentalFeatures; - + + // Specify what THIS build is + public bool isRelease = false; + public bool isReleaseCandidate = true; + public bool isUnstable = false; + /// /// A helper method which returns true if the supplied experimental feature is enabled /// diff --git a/GreenshotPlugin/Core/SourceForgeHelper.cs b/GreenshotPlugin/Core/SourceForgeHelper.cs index 93c82d687..c09d5a2aa 100644 --- a/GreenshotPlugin/Core/SourceForgeHelper.cs +++ b/GreenshotPlugin/Core/SourceForgeHelper.cs @@ -55,7 +55,34 @@ namespace GreenshotPlugin.Core { get {return language;} set {language = value;} } - + + public bool isExe { + get { + if (file != null) { + return file.ToLower().EndsWith(".exe"); + } + return false; + } + } + + public bool isUnstable { + get { + if (file != null) { + return file.ToLower().Contains("unstable"); + } + return false; + } + } + + public bool isReleaseCandidate { + get { + if (file != null) { + return file.ToLower().Contains("RC"); + } + return false; + } + } + public SourceforgeFile(string file, string pubdate, string link, string directLink) { this.file = file; this.pubdate = DateTime.Parse(pubdate); @@ -78,7 +105,7 @@ namespace GreenshotPlugin.Core { HttpWebRequest webRequest; XmlDocument rssDoc = new XmlDocument(); try { - webRequest = (HttpWebRequest)GreenshotPlugin.Core.NetworkHelper.CreateWebRequest(RSSFEED); + webRequest = (HttpWebRequest)NetworkHelper.CreateWebRequest(RSSFEED); XmlTextReader rssReader = new XmlTextReader(webRequest.GetResponse().GetResponseStream()); // Load the XML content into a XmlDocument