From ae70125f63275db39491156f7b2b92a28f438679 Mon Sep 17 00:00:00 2001 From: Jonathan Bayer Date: Thu, 25 Jul 2019 06:53:02 -0400 Subject: [PATCH] Added InstallChecker.cs Updated AssemblyVersion.tt --- .vs/AGExt/v15/sqlite3/storage.ide | Bin 3346432 -> 3346432 bytes AGExt.version | 4 +- AGExt.version.old | 25 --------- AGExt/AGExt.csproj | 13 ++--- AGExt/AssemblyVersion.tt | 8 ++- AGExt/InstallChecker.cs | 81 ++++++++++++++++++++++++++++++ ChangeLog.txt | 4 ++ deploy.bat | 2 +- 8 files changed, 101 insertions(+), 36 deletions(-) delete mode 100644 AGExt.version.old create mode 100644 AGExt/InstallChecker.cs diff --git a/.vs/AGExt/v15/sqlite3/storage.ide b/.vs/AGExt/v15/sqlite3/storage.ide index 17c0f5c7f922d36221b1c02517e3eec3348dbe6e..ae4d9c30faedcfae556aaa8c30139b4f5635d897 100644 GIT binary patch delta 7599 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 ad7JP=a6%kc*A7h+j{e->i5-G^?h}8 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 diff --git a/AGExt.version b/AGExt.version index 6b419d3..d560e7a 100644 --- a/AGExt.version +++ b/AGExt.version @@ -9,8 +9,8 @@ "VERSION": { "MAJOR": 2, "MINOR": 3, - "PATCH": 4, - "BUILD": 1 + "PATCH": 5, + "BUILD": 0 }, "KSP_VERSION_MIN": { "MAJOR": 1, diff --git a/AGExt.version.old b/AGExt.version.old deleted file mode 100644 index 9735ae5..0000000 --- a/AGExt.version.old +++ /dev/null @@ -1,25 +0,0 @@ -{ - "NAME": "AGExt", - "URL": "http://ksp.spacetux.net/avc/AGExt", - "DOWNLOAD": "https://github.com/linuxgurugamer/AGExt/releases", - "GITHUB": { - "USERNAME": "linuxgurugamer", - "REPOSITORY": "AGExt" - }, - "VERSION": { - "MAJOR": 2, - "MINOR": 3, - "PATCH": 3, - "BUILD": 7 - }, - "KSP_VERSION": { - "MAJOR": 1, - "MINOR": 5, - "PATCH": 1 - }, - "KSP_VERSION_MIN": { - "MAJOR": 1, - "MINOR": 5, - "PATCH": 1 - } -} diff --git a/AGExt/AGExt.csproj b/AGExt/AGExt.csproj index f5d433b..6f2bb91 100644 --- a/AGExt/AGExt.csproj +++ b/AGExt/AGExt.csproj @@ -39,6 +39,7 @@ + @@ -65,27 +66,27 @@ False - R:\KSP_1.7.0_dev\KSP_x64_Data\Managed\Assembly-CSharp.dll + R:\KSP_1.7.2_dev\KSP_x64_Data\Managed\Assembly-CSharp.dll False - R:\KSP_1.7.0_dev\KSP_x64_Data\Managed\Assembly-CSharp-firstpass.dll + R:\KSP_1.7.2_dev\KSP_x64_Data\Managed\Assembly-CSharp-firstpass.dll False - R:\KSP_1.7.0_dev\GameData\000_ClickThroughBlocker\Plugins\ClickThroughBlocker.dll + R:\KSP_1.7.2_dev\GameData\000_ClickThroughBlocker\Plugins\ClickThroughBlocker.dll - R:\KSP_1.7.0_dev\GameData\001_ToolbarControl\Plugins\ToolbarControl.dll + R:\KSP_1.7.2_dev\GameData\001_ToolbarControl\Plugins\ToolbarControl.dll False - R:\KSP_1.7.0_dev\KSP_x64_Data\Managed\UnityEngine.dll + R:\KSP_1.7.2_dev\KSP_x64_Data\Managed\UnityEngine.dll False - R:\KSP_1.7.0_dev\KSP_x64_Data\Managed\UnityEngine.UI.dll + R:\KSP_1.7.2_dev\KSP_x64_Data\Managed\UnityEngine.UI.dll diff --git a/AGExt/AssemblyVersion.tt b/AGExt/AssemblyVersion.tt index 485587a..cca0ec7 100644 --- a/AGExt/AssemblyVersion.tt +++ b/AGExt/AssemblyVersion.tt @@ -28,10 +28,14 @@ int i2 = 0; string s; + + // For Visual Studio / MSBuild Build-Time Template Resolution + string RootDirectory = System.IO.Path.GetDirectoryName(Host.TemplateFile) + @"\..\"; + // - // Update the following with the complete path to the .version file + // Update the following with the name of the .version file which is in the root directory // - string versionfile = @"D:\Users\jbb\github\AGExt\AGExt.version"; + string versionfile = RootDirectory + "AGExt.version"; if (!File.Exists(versionfile)) { diff --git a/AGExt/InstallChecker.cs b/AGExt/InstallChecker.cs new file mode 100644 index 0000000..b6ab88d --- /dev/null +++ b/AGExt/InstallChecker.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +/** + * Based on the InstallChecker from the Kethane mod for Kerbal Space Program. + * https://github.com/Majiir/Kethane/blob/b93b1171ec42b4be6c44b257ad31c7efd7ea1702/Plugin/InstallChecker.cs + * + * Original is (C) Copyright Majiir. + * CC0 Public Domain (http://creativecommons.org/publicdomain/zero/1.0/) + * http://forum.kerbalspaceprogram.com/threads/65395-CompatibilityChecker-Discussion-Thread?p=899895&viewfull=1#post899895 + * + * This file has been modified extensively and is released under the same license. + */ +using System; +using System.IO; +using System.Linq; +using System.Reflection; +using UnityEngine; + +namespace AGExt +{ + [KSPAddon(KSPAddon.Startup.MainMenu, true)] + internal class InstallChecker : MonoBehaviour + { + private const string MODNAME = "Action Groups reExtended"; + private const string FOLDERNAME = "Diazo/AGExt"; + private const string EXPECTEDPATH = FOLDERNAME + "/Plugins"; + + protected void Start() + { + // Search for this mod's DLL existing in the wrong location. This will also detect duplicate copies because only one can be in the right place. + var assemblies = AssemblyLoader.loadedAssemblies.Where(a => a.assembly.GetName().Name == Assembly.GetExecutingAssembly().GetName().Name).Where(a => a.url != EXPECTEDPATH); + if (assemblies.Any()) + { + var badPaths = assemblies.Select(a => a.path).Select(p => Uri.UnescapeDataString(new Uri(Path.GetFullPath(KSPUtil.ApplicationRootPath)).MakeRelativeUri(new Uri(p)).ToString().Replace('/', Path.DirectorySeparatorChar))); + PopupDialog.SpawnPopupDialog + ( + new Vector2(0.5f, 0.5f), + new Vector2(0.5f, 0.5f), + "test", + "Incorrect " + MODNAME + " Installation", + MODNAME + " has been installed incorrectly and will not function properly. All files should be located in KSP/GameData/" + FOLDERNAME + ". Do not move any files from inside that folder.\n\nIncorrect path(s):\n" + String.Join("\n", badPaths.ToArray()), + "OK", + false, + HighLogic.UISkin + ); + Debug.Log("Incorrect " + MODNAME + " Installation: " + MODNAME + " has been installed incorrectly and will not function properly. All files should be located in KSP/GameData/" + EXPECTEDPATH + ". Do not move any files from inside that folder.\n\nIncorrect path(s):\n" + String.Join("\n", badPaths.ToArray()) + + ); + + } + + //// Check for Module Manager + //if (!AssemblyLoader.loadedAssemblies.Any(a => a.assembly.GetName().Name.StartsWith("ModuleManager") && a.url == "")) + //{ + // PopupDialog.SpawnPopupDialog("Missing Module Manager", + // modName + " requires the Module Manager mod in order to function properly.\n\nPlease download from http://forum.kerbalspaceprogram.com/threads/55219 and copy to the KSP/GameData/ directory.", + // "OK", false, HighLogic.Skin); + //} + + CleanupOldVersions(); + } + + /* + * Tries to fix the install if it was installed over the top of a previous version + */ + void CleanupOldVersions() + { + try + { + } + catch (Exception ex) + { + Debug.LogError("-ERROR- " + this.GetType().FullName + "[" + this.GetInstanceID().ToString("X") + "][" + Time.time.ToString("0.00") + "]: " + + "Exception caught while cleaning up old files.\n" + ex.Message + "\n" + ex.StackTrace); + + } + } + } +} + diff --git a/ChangeLog.txt b/ChangeLog.txt index b773f12..7d1774a 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,3 +1,7 @@ +2.3.5 + Added InstallChecker.cs + Updated AssemblyVersion.tt + 2.3.4.1 fixed missing kOSVoidAction diff --git a/deploy.bat b/deploy.bat index 3321ac5..796089d 100644 --- a/deploy.bat +++ b/deploy.bat @@ -7,7 +7,7 @@ rem GAMEDATA is the name of the local GameData rem VERSIONFILE is the name of the version file, usually the same as GAMEDATA, rem but not always -set H=R:\KSP_1.7.0_dev +set H=R:\KSP_1.7.2_dev set GAMEDIR=AGExt set GAMEDATA="GameData\Diazo" set VERSIONFILE=%GAMEDIR%.version