diff --git a/Jellyfin.Server/CoreAppHost.cs b/Jellyfin.Server/CoreAppHost.cs
index 8b4b61e290..59285a5109 100644
--- a/Jellyfin.Server/CoreAppHost.cs
+++ b/Jellyfin.Server/CoreAppHost.cs
@@ -41,6 +41,16 @@ namespace Jellyfin.Server
networkManager,
configuration)
{
+ var previousVersion = ConfigurationManager.CommonConfiguration.PreviousVersion;
+ if (ApplicationVersion.CompareTo(previousVersion) > 0)
+ {
+ Logger.LogWarning("Version check shows Jellyfin was updated: previous version={0}, current version={1}", previousVersion, ApplicationVersion);
+
+ // TODO: run update routines
+
+ ConfigurationManager.CommonConfiguration.PreviousVersion = ApplicationVersion;
+ ConfigurationManager.SaveConfiguration();
+ }
}
///
diff --git a/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs
index 6a1a0f0901..cc2541f74f 100644
--- a/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/BaseApplicationConfiguration.cs
@@ -1,3 +1,6 @@
+using System;
+using System.Xml.Serialization;
+
namespace MediaBrowser.Model.Configuration
{
///
@@ -25,6 +28,24 @@ namespace MediaBrowser.Model.Configuration
/// The cache path.
public string CachePath { get; set; }
+ ///
+ /// Last known version that was ran using the configuration.
+ ///
+ /// The version from previous run.
+ [XmlIgnore]
+ public Version PreviousVersion { get; set; }
+
+ ///
+ /// Stringified PreviousVersion to be stored/loaded,
+ /// because System.Version itself isn't xml-serializable
+ ///
+ /// String value of PreviousVersion
+ public string PreviousVersionStr
+ {
+ get => PreviousVersion?.ToString();
+ set => PreviousVersion = Version.Parse(value);
+ }
+
///
/// Initializes a new instance of the class.
///