diff --git a/Netch/Updater/Updater.cs b/Netch/Updater/Updater.cs
index 7261b1b2..63628d29 100644
--- a/Netch/Updater/Updater.cs
+++ b/Netch/Updater/Updater.cs
@@ -95,6 +95,17 @@ namespace Netch.Updater
private void ApplyUpdate()
{
+ // Pre Update
+ try
+ {
+ // Backup Configuration file
+ File.Copy(Configuration.SettingFileFullName, Configuration.SettingFileFullName + ".bak", true);
+ }
+ catch (Exception)
+ {
+ // ignored
+ }
+
// extract Update file to {tempDirectory}\extract
var extractPath = Path.Combine(_tempDirectory, "extract");
int exitCode;
@@ -126,7 +137,7 @@ namespace Netch.Updater
if (extendedKeepDirectories.Any(p => file.StartsWith(p)))
continue;
- if (Path.GetFileName(file) is ModeHelper.DISABLE_MODE_DIRECTORY_FILENAME)
+ if (Path.GetFileName(file) is ModeHelper.DisableModeDirectoryFileName)
continue;
filesToDelete.Add(file);
diff --git a/Netch/Utils/Configuration.cs b/Netch/Utils/Configuration.cs
index 85b5e5c2..99e74d50 100644
--- a/Netch/Utils/Configuration.cs
+++ b/Netch/Utils/Configuration.cs
@@ -12,12 +12,10 @@ namespace Netch.Utils
///
/// 数据目录
///
- public const string DATA_DIR = "data";
+ public static string DataDirectoryFullName => Path.Combine(Global.NetchDir, "data");
+
+ public static string SettingFileFullName => $"{DataDirectoryFullName}\\settings.json";
- ///
- /// 设置
- ///
- public static readonly string SETTINGS_JSON = $"{DATA_DIR}\\settings.json";
private static readonly JsonSerializerOptions JsonSerializerOptions = Global.NewDefaultJsonSerializerOptions;
static Configuration()
@@ -31,11 +29,11 @@ namespace Netch.Utils
///
public static void Load()
{
- if (File.Exists(SETTINGS_JSON))
+ if (File.Exists(SettingFileFullName))
{
try
{
- using var fileStream = File.OpenRead(SETTINGS_JSON);
+ using var fileStream = File.OpenRead(SettingFileFullName);
var settings = JsonSerializer.DeserializeAsync(fileStream, JsonSerializerOptions).Result!;
CheckSetting(settings);
@@ -71,10 +69,10 @@ namespace Netch.Utils
///
public static void Save()
{
- if (!Directory.Exists(DATA_DIR))
- Directory.CreateDirectory(DATA_DIR);
+ if (!Directory.Exists(DataDirectoryFullName))
+ Directory.CreateDirectory(DataDirectoryFullName);
- File.WriteAllBytes(SETTINGS_JSON, JsonSerializer.SerializeToUtf8Bytes(Global.Settings, JsonSerializerOptions));
+ File.WriteAllBytes(SettingFileFullName, JsonSerializer.SerializeToUtf8Bytes(Global.Settings, JsonSerializerOptions));
}
}
}
\ No newline at end of file
diff --git a/Netch/Utils/ModeHelper.cs b/Netch/Utils/ModeHelper.cs
index 831e35d6..b710c055 100644
--- a/Netch/Utils/ModeHelper.cs
+++ b/Netch/Utils/ModeHelper.cs
@@ -10,16 +10,15 @@ namespace Netch.Utils
{
public static class ModeHelper
{
- private const string MODE_DIR = "mode";
- public const string DISABLE_MODE_DIRECTORY_FILENAME = "disabled";
+ public const string DisableModeDirectoryFileName = "disabled";
- public static readonly string ModeDirectory = Path.Combine(Global.NetchDir, $"{MODE_DIR}\\");
+ public static string ModeDirectoryFullName => Path.Combine(Global.NetchDir, "mode");
private static readonly FileSystemWatcher FileSystemWatcher;
static ModeHelper()
{
- FileSystemWatcher = new FileSystemWatcher(ModeDirectory)
+ FileSystemWatcher = new FileSystemWatcher(ModeDirectoryFullName)
{
NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.FileName,
IncludeSubdirectories = true,
@@ -40,12 +39,16 @@ namespace Netch.Utils
public static string GetRelativePath(string fullName)
{
- return fullName.Substring(ModeDirectory.Length);
+ var length = ModeDirectoryFullName.Length;
+ if (!ModeDirectoryFullName.EndsWith("\\"))
+ length++;
+
+ return fullName.Substring(length);
}
public static string GetFullPath(string relativeName)
{
- return Path.Combine(ModeDirectory, relativeName);
+ return Path.Combine(ModeDirectoryFullName, relativeName);
}
///
@@ -54,7 +57,7 @@ namespace Netch.Utils
public static void Load()
{
Global.Modes.Clear();
- LoadModeDirectory(ModeDirectory);
+ LoadModeDirectory(ModeDirectoryFullName);
Sort();
}
@@ -67,7 +70,7 @@ namespace Netch.Utils
LoadModeDirectory(directory);
// skip Directory with a disabled file in
- if (File.Exists(Path.Combine(modeDirectory, DISABLE_MODE_DIRECTORY_FILENAME)))
+ if (File.Exists(Path.Combine(modeDirectory, DisableModeDirectoryFileName)))
return;
foreach (var file in Directory.GetFiles(modeDirectory).Where(f => f.EndsWith(".txt")))