From ecd3717eab737ede13023c7c81baa34488a05609 Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Thu, 22 Feb 2018 14:19:36 -0500 Subject: [PATCH] Add backup/restore of settings --- Settings/Extensions.cs | 59 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/Settings/Extensions.cs b/Settings/Extensions.cs index 9f3699b..ef38c87 100644 --- a/Settings/Extensions.cs +++ b/Settings/Extensions.cs @@ -1,7 +1,8 @@ -using System.Configuration; +using Common.Debug; +using System; +using System.Configuration; using System.IO; - -using Common.Debug; +using System.Reflection; namespace Common.Settings { @@ -16,11 +17,11 @@ namespace Common.Settings FileInfo configFile = new FileInfo(config.FilePath); // If we can't get the parent directories then don't bother - if (configFile.Directory == null || configFile.Directory.Parent == null) + if (configFile.Directory?.Parent == null) return; // Loop over all directories of the configuration file parent directory - foreach (DirectoryInfo directory in configFile.Directory.Parent.GetDirectories()) + foreach (var directory in configFile.Directory.Parent.GetDirectories()) { // Delete the directory if it isn't the current config file directory if (directory.FullName != configFile.Directory.FullName) @@ -37,5 +38,53 @@ namespace Common.Settings } } } + + public static void BackupSettings() + { + var settingsFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; + var destination = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\..\last.config"; + File.Copy(settingsFile, destination, true); + } + + public static void RestoreSettings() + { + var destFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; + var sourceFile = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\..\last.config"; + + if (!File.Exists(sourceFile)) + return; + + var destDirectory = Path.GetDirectoryName(destFile); + + if (destDirectory == null) + return; + + try + { + Directory.CreateDirectory(destDirectory); + } + catch (Exception exception) + { + Console.WriteLine(exception); + } + + try + { + File.Copy(sourceFile, destFile, true); + } + catch (Exception exception) + { + Console.WriteLine(exception); + } + + try + { + File.Delete(sourceFile); + } + catch (Exception exception) + { + Console.WriteLine(exception); + } + } } }