summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2020-01-25 18:37:17 -0500
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2020-01-25 18:37:17 -0500
commita96bfea205ab855913726cad58d63191fbf24399 (patch)
tree3cbcb883be1ff3f104545a4b425526e81bbe5aef
parentfc0b98be4584eec2b06a3af09cc4b85f9e9a9efc (diff)
downloadSMAPI-a96bfea205ab855913726cad58d63191fbf24399.tar.gz
SMAPI-a96bfea205ab855913726cad58d63191fbf24399.tar.bz2
SMAPI-a96bfea205ab855913726cad58d63191fbf24399.zip
back up config.user.json when installing (#693)
-rw-r--r--src/SMAPI.Installer/Framework/InstallerPaths.cs18
-rw-r--r--src/SMAPI.Installer/InteractiveInstaller.cs6
2 files changed, 24 insertions, 0 deletions
diff --git a/src/SMAPI.Installer/Framework/InstallerPaths.cs b/src/SMAPI.Installer/Framework/InstallerPaths.cs
index 9393e14f..ac6c3a8e 100644
--- a/src/SMAPI.Installer/Framework/InstallerPaths.cs
+++ b/src/SMAPI.Installer/Framework/InstallerPaths.cs
@@ -8,6 +8,9 @@ namespace StardewModdingAPI.Installer.Framework
/*********
** Accessors
*********/
+ /****
+ ** Main folders
+ ****/
/// <summary>The directory path containing the files to copy into the game folder.</summary>
public DirectoryInfo BundleDir { get; }
@@ -17,9 +20,18 @@ namespace StardewModdingAPI.Installer.Framework
/// <summary>The directory into which to install mods.</summary>
public DirectoryInfo ModsDir { get; }
+ /****
+ ** Installer paths
+ ****/
/// <summary>The full path to directory path containing the files to copy into the game folder.</summary>
public string BundlePath => this.BundleDir.FullName;
+ /// <summary>The full path to the backup API user settings folder, if applicable.</summary>
+ public string BundleApiUserConfigPath { get; }
+
+ /****
+ ** Game paths
+ ****/
/// <summary>The full path to the directory containing the installed game.</summary>
public string GamePath => this.GameDir.FullName;
@@ -29,6 +41,9 @@ namespace StardewModdingAPI.Installer.Framework
/// <summary>The full path to SMAPI's internal configuration file.</summary>
public string ApiConfigPath { get; }
+ /// <summary>The full path to the user's config overrides file.</summary>
+ public string ApiUserConfigPath { get; }
+
/// <summary>The full path to the installed SMAPI executable file.</summary>
public string ExecutablePath { get; }
@@ -55,11 +70,14 @@ namespace StardewModdingAPI.Installer.Framework
this.GameDir = gameDir;
this.ModsDir = new DirectoryInfo(Path.Combine(gameDir.FullName, "Mods"));
+ this.BundleApiUserConfigPath = Path.Combine(bundleDir.FullName, "smapi-internal", "config.user.json");
+
this.ExecutablePath = Path.Combine(gameDir.FullName, gameExecutableName);
this.UnixLauncherPath = Path.Combine(gameDir.FullName, "StardewValley");
this.UnixSmapiLauncherPath = Path.Combine(gameDir.FullName, "StardewModdingAPI");
this.UnixBackupLauncherPath = Path.Combine(gameDir.FullName, "StardewValley-original");
this.ApiConfigPath = Path.Combine(gameDir.FullName, "smapi-internal", "config.json");
+ this.ApiUserConfigPath = Path.Combine(gameDir.FullName, "smapi-internal", "config.user.json");
}
}
}
diff --git a/src/SMAPI.Installer/InteractiveInstaller.cs b/src/SMAPI.Installer/InteractiveInstaller.cs
index 14f37258..2d58baf0 100644
--- a/src/SMAPI.Installer/InteractiveInstaller.cs
+++ b/src/SMAPI.Installer/InteractiveInstaller.cs
@@ -352,6 +352,12 @@ namespace StardewModdingApi.Installer
Console.WriteLine();
/****
+ ** Back up user settings
+ ****/
+ if (File.Exists(paths.ApiUserConfigPath))
+ File.Copy(paths.ApiUserConfigPath, paths.BundleApiUserConfigPath);
+
+ /****
** Always uninstall old files
****/
// restore game launcher