Skip to content

Commit

Permalink
v2.8.3 rev.1
Browse files Browse the repository at this point in the history
fix SettingsHost.Load
  • Loading branch information
AigioL committed Aug 15, 2022
1 parent 6f28ce0 commit ef62769
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 10 deletions.
82 changes: 72 additions & 10 deletions src/Common.CoreLib/Application/Settings/SettingsHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,29 +49,91 @@ public static void Save()
}
}

/// <summary>
/// 尝试备份配置
/// </summary>
/// <param name="bakLocalFilePath"></param>
static void TryBackup(string bakLocalFilePath)
{
try
{
var localFilePath = SettingsHostBase.LocalFilePath;
if (File.Exists(localFilePath))
{
File.Copy(localFilePath, bakLocalFilePath, true);
}
}
catch (Exception ex)
{
Log.Error(nameof(SettingsHost), ex, "Config TryBackUp");
}
}

/// <summary>
/// 尝试还原备份配置,返回是否有备份文件
/// </summary>
/// <param name="bakLocalFilePath"></param>
/// <returns></returns>
static bool TryRestoreBackup(string bakLocalFilePath)
{
try
{
var exists = File.Exists(bakLocalFilePath);
if (exists)
{
var localFilePath = SettingsHostBase.LocalFilePath;
File.Copy(bakLocalFilePath, localFilePath, true);
}
return exists;
}
catch (Exception ex)
{
Log.Error(nameof(SettingsHost), ex, "Config TryRestoreBackup");
}
return false;
}

/// <summary>
/// 尝试删除配置
/// </summary>
static void TryDelete()
{
try
{
var localFilePath = SettingsHostBase.LocalFilePath;
if (File.Exists(localFilePath))
{
File.Delete(localFilePath);
}
}
catch (Exception ex)
{
Log.Error(nameof(SettingsHost), ex, "Config TryDelete");
}
}

public static void Load()
{
var isLoad = false;
var bakLocalFilePath = $"{SettingsHostBase.LocalFilePath}.bak";
try
{
SettingsHostBase.Local.Load();
isLoad = true;

if (File.Exists(SettingsHostBase.LocalFilePath))
File.Copy(SettingsHostBase.LocalFilePath, bakLocalFilePath, true);
TryBackup(bakLocalFilePath);
}
catch (Exception ex)
{
if (File.Exists(bakLocalFilePath))
if (!TryRestoreBackup(bakLocalFilePath))
{
File.Copy(bakLocalFilePath, SettingsHostBase.LocalFilePath, true);
// 还原备份文件失败,删除当前配置
TryDelete();
}
else if (File.Exists(SettingsHostBase.LocalFilePath))
{
File.Delete(SettingsHostBase.LocalFilePath);
}
Log.Error(nameof(SettingsHost), ex, "Config Load");

SettingsHostBase.Local.Load();
Log.Error(nameof(SettingsHost), ex, $"Config Load, isLoad: {isLoad}");

if (!isLoad) SettingsHostBase.Local.Load();
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/Common.CoreLib/IOPath.cs
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,10 @@ protected static void InitFileSystemUseDestFirst(
{
paths[i] = item;
}
else
{
DirCreateByNotExists(paths[i]);
}
}

InitFileSystem(GetAppDataDirectory, GetCacheDirectory);
Expand Down

0 comments on commit ef62769

Please sign in to comment.