From 0a974b4a710170f9f666ef26816e6cc191f07c36 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Sat, 25 Nov 2017 16:57:11 -0500 Subject: [PATCH 1/3] Fixes VersionMismatch --- TGS.Interface/ServerInterface.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TGS.Interface/ServerInterface.cs b/TGS.Interface/ServerInterface.cs index e92e630e19..8343f09cde 100644 --- a/TGS.Interface/ServerInterface.cs +++ b/TGS.Interface/ServerInterface.cs @@ -298,8 +298,8 @@ namespace TGS.Interface { var splits = GetServiceComponent().Version().Split(' '); var theirs = new Version(splits[splits.Length - 1].Substring(1)); - var ours = new Version(FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileVersion); - if(theirs.Major != ours.Major || theirs.Minor != ours.Minor || theirs.Revision != ours.Revision) //don't care about the patch level + var ours = new Version(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion); + if(theirs.Major != ours.Major || theirs.Minor != ours.Minor || theirs.Build != ours.Build) //don't care about the patch level { errorMessage = String.Format("Version mismatch between interface version ({0}) and service version ({1}). Some functionality may crash this program.", ours, theirs); return true; From 47466f306358946bb9e788028a01a99dec831286 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Sat, 25 Nov 2017 17:07:11 -0500 Subject: [PATCH 2/3] Standardized method of getting versions --- TGS.ControlPanel/ControlPanel/ControlPanel.cs | 7 +-- TGS.Installer.UI/Main.cs | 4 +- TGS.Interface/ServerInterface.cs | 44 ++++++++++++++++--- TGS.Server/Server.cs | 2 +- 4 files changed, 43 insertions(+), 14 deletions(-) diff --git a/TGS.ControlPanel/ControlPanel/ControlPanel.cs b/TGS.ControlPanel/ControlPanel/ControlPanel.cs index eff20b2e33..c60f68822c 100644 --- a/TGS.ControlPanel/ControlPanel/ControlPanel.cs +++ b/TGS.ControlPanel/ControlPanel/ControlPanel.cs @@ -32,11 +32,8 @@ namespace TGS.ControlPanel FormClosed += ControlPanel_FormClosed; Interface = I; if (Interface.IsRemoteConnection) - { - var splits = Interface.GetServiceComponent().Version().Split(' '); - Text = String.Format("TGS {0}: {1}:{2}", splits[splits.Length - 1], Interface.HTTPSURL, Interface.HTTPSPort); - } - Text += " Instance: " + I.InstanceName; + Text = String.Format("TGS {0}: {1}:{2}", Interface.ServerVersion, Interface.HTTPSURL, Interface.HTTPSPort); + Text = String.Format("{0} Instance: {1}", Text, I.InstanceName); if (Interface.VersionMismatch(out string error) && MessageBox.Show(error, "Warning", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { Close(); diff --git a/TGS.Installer.UI/Main.cs b/TGS.Installer.UI/Main.cs index 5d33a7f5d0..2a9f7a0136 100644 --- a/TGS.Installer.UI/Main.cs +++ b/TGS.Installer.UI/Main.cs @@ -79,9 +79,7 @@ namespace TGS.Installer.UI var verifiedConnection = Interface.ConnectionStatus().HasFlag(ConnectivityLevel.Administrator); try { - VersionLabel.Text = Interface.GetServiceComponent().Version(); - var splits = VersionLabel.Text.Split(' '); - var realVersion = new Version(splits[splits.Length - 1].Substring(1)); + var realVersion = Interface.ServerVersion; var isV0 = realVersion < new Version(3, 1, 0, 0); if (isV0) //OH GOD!!!! MessageBox.Show("Upgrading from version 3.0 may trigger a bug that can delete /config and /data. IT IS STRONGLY RECCOMMENDED THAT YOU BACKUP THESE FOLDERS BEFORE UPDATING!", "Warning"); diff --git a/TGS.Interface/ServerInterface.cs b/TGS.Interface/ServerInterface.cs index 8343f09cde..833b9c5574 100644 --- a/TGS.Interface/ServerInterface.cs +++ b/TGS.Interface/ServerInterface.cs @@ -16,6 +16,11 @@ namespace TGS.Interface /// public interface IServerInterface : IDisposable { + /// + /// The of the connected + /// + Version ServerVersion { get; } + /// /// The name of the current instance in use. Defaults to /// @@ -86,6 +91,11 @@ namespace TGS.Interface /// public static readonly IList ValidServiceInterfaces = new List { typeof(ITGSService), typeof(ITGInstanceManager), typeof(ITGConnectivity), typeof(ITGLanding) }; + /// + /// Version of the interface + /// + public static readonly Version Version = Assembly.GetExecutingAssembly().GetName().Version; + /// /// List of s that can be used with /// @@ -110,6 +120,33 @@ namespace TGS.Interface /// public const string InstanceInterfaceName = MasterInterfaceName + "/Instance"; + /// + /// The + /// + Version _serverVersion; + + /// + public Version ServerVersion { get + { + lock (this) + if (_serverVersion == null) + { + string rawVersion; + //check ITGSService first for compatiblity reasons + try + { + rawVersion = GetServiceComponent().Version(); + } + catch + { + rawVersion = GetServiceComponent().Version(); + } + var splits = rawVersion.Split(' '); + _serverVersion = new Version(splits[splits.Length - 1].Substring(1)); + } + return _serverVersion; + } } + /// public string InstanceName { get; private set; } @@ -296,12 +333,9 @@ namespace TGS.Interface /// public bool VersionMismatch(out string errorMessage) { - var splits = GetServiceComponent().Version().Split(' '); - var theirs = new Version(splits[splits.Length - 1].Substring(1)); - var ours = new Version(FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion); - if(theirs.Major != ours.Major || theirs.Minor != ours.Minor || theirs.Build != ours.Build) //don't care about the patch level + if(ServerVersion.Major != Version.Major || ServerVersion.Minor != Version.Minor || ServerVersion.Build != Version.Build) //don't care about the patch level { - errorMessage = String.Format("Version mismatch between interface version ({0}) and service version ({1}). Some functionality may crash this program.", ours, theirs); + errorMessage = String.Format("Version mismatch between interface version ({0}) and service version ({1}). Some functionality may crash this program.", Version, ServerVersion); return true; } errorMessage = null; diff --git a/TGS.Server/Server.cs b/TGS.Server/Server.cs index b500bf3fa0..c2fe53a342 100644 --- a/TGS.Server/Server.cs +++ b/TGS.Server/Server.cs @@ -30,7 +30,7 @@ namespace TGS.Server /// /// The service version based on the /// - public static readonly string VersionString = "/tg/station 13 Server v" + FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).FileVersion; + public static readonly string VersionString = String.Format("/tg/station 13 Server v{0}", Assembly.GetExecutingAssembly().GetName().Version); /// /// Singleton From 202a23797e3895e2a6a4980d126340956a4bae75 Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Sat, 25 Nov 2017 17:10:41 -0500 Subject: [PATCH 3/3] Fixed when the version mismatch message is shown in Control Panel --- TGS.ControlPanel/ControlPanel/ControlPanel.cs | 5 ----- TGS.ControlPanel/Login.cs | 5 ++++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/TGS.ControlPanel/ControlPanel/ControlPanel.cs b/TGS.ControlPanel/ControlPanel/ControlPanel.cs index c60f68822c..a6d66c86a3 100644 --- a/TGS.ControlPanel/ControlPanel/ControlPanel.cs +++ b/TGS.ControlPanel/ControlPanel/ControlPanel.cs @@ -34,11 +34,6 @@ namespace TGS.ControlPanel if (Interface.IsRemoteConnection) Text = String.Format("TGS {0}: {1}:{2}", Interface.ServerVersion, Interface.HTTPSURL, Interface.HTTPSPort); Text = String.Format("{0} Instance: {1}", Text, I.InstanceName); - if (Interface.VersionMismatch(out string error) && MessageBox.Show(error, "Warning", MessageBoxButtons.OKCancel) == DialogResult.Cancel) - { - Close(); - return; - } Panels.SelectedIndexChanged += Panels_SelectedIndexChanged; Panels.SelectedIndex += Math.Min(Properties.Settings.Default.LastPageIndex, Panels.TabCount - 1); InitRepoPage(); diff --git a/TGS.ControlPanel/Login.cs b/TGS.ControlPanel/Login.cs index 4897e5260d..8b03af0ee1 100644 --- a/TGS.ControlPanel/Login.cs +++ b/TGS.ControlPanel/Login.cs @@ -73,7 +73,10 @@ namespace TGS.ControlPanel MessageBox.Show("Authentication error: Username/password/windows identity is not authorized! Ensure you are a system administrator or in the correct Windows group on the service machine."); return; } - + + if (I.VersionMismatch(out error) && MessageBox.Show(error, "Warning", MessageBoxButtons.OKCancel) == DialogResult.Cancel) + return; + new InstanceSelector(I).Show(); Close(); }