diff --git a/.semver.txt b/.semver.txt index b668c3b..8fc77d0 100644 --- a/.semver.txt +++ b/.semver.txt @@ -1 +1 @@ -1.0.16 +1.0.17 diff --git a/src/MonsterMonitor/MonsterMonitor.csproj b/src/MonsterMonitor/MonsterMonitor.csproj index 7376e40..1008c53 100644 --- a/src/MonsterMonitor/MonsterMonitor.csproj +++ b/src/MonsterMonitor/MonsterMonitor.csproj @@ -5,11 +5,11 @@ true 7.3 MonsterMonitor - MonsterMonitor - 1.0.16 - 1.0.16 - 1.0.16 - 1.0.16 + devenv + 1.0.17 + 1.0.17 + 1.0.17 + 1.0.17 diff --git a/src/MonsterMonitor/Services/GitHubUpdateService.cs b/src/MonsterMonitor/Services/GitHubUpdateService.cs index e806630..e09acda 100644 --- a/src/MonsterMonitor/Services/GitHubUpdateService.cs +++ b/src/MonsterMonitor/Services/GitHubUpdateService.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.IO; using System.IO.Compression; using System.Net; +using System.Reflection; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Text; @@ -116,15 +117,51 @@ namespace MonsterMonitor.Services } } - private static Version GetCurrentVersion() + private Version GetCurrentVersion() { - Version version; - if (!Version.TryParse(Application.ProductVersion, out version)) + var fileVersion = TryParseVersion(FileVersionInfo.GetVersionInfo(Application.ExecutablePath).ProductVersion); + if (fileVersion != null) { - version = new Version(1, 0, 0, 0); + return fileVersion; } - return version; + var assemblyVersion = Assembly.GetExecutingAssembly().GetName().Version; + if (assemblyVersion != null) + { + return assemblyVersion; + } + + var productVersion = TryParseVersion(Application.ProductVersion); + if (productVersion != null) + { + return productVersion; + } + + _log.Warn("Не удалось определить текущую версию приложения, использую 1.0.0."); + return new Version(1, 0, 0, 0); + } + + private static Version TryParseVersion(string raw) + { + if (string.IsNullOrWhiteSpace(raw)) + { + return null; + } + + var value = raw.Trim(); + var plusIndex = value.IndexOf('+'); + if (plusIndex > 0) + { + value = value.Substring(0, plusIndex); + } + + if (value.StartsWith("v", StringComparison.OrdinalIgnoreCase)) + { + value = value.Substring(1); + } + + Version version; + return Version.TryParse(value, out version) ? version : null; } private static Version ParseVersion(string rawVersion)