Improved backup and restore

Overwrite the configuration file directly in the main program
This commit is contained in:
2dust 2025-01-02 13:36:26 +08:00
parent e122ea8146
commit 7884853098
3 changed files with 36 additions and 3 deletions

View file

@ -73,5 +73,19 @@ namespace ServiceLib.Common
{ {
return _dbAsync.Table<T>(); return _dbAsync.Table<T>();
} }
public async Task DisposeDbConnectionAsync()
{
await Task.Factory.StartNew(() =>
{
_db?.Close();
_db?.Dispose();
_db = null;
_dbAsync?.GetConnection()?.Close();
_dbAsync?.GetConnection()?.Dispose();
_dbAsync = null;
});
}
} }
} }

View file

@ -141,7 +141,21 @@ namespace ServiceLib.ViewModels
var result = await CreateZipFileFromDirectory(fileBackup); var result = await CreateZipFileFromDirectory(fileBackup);
if (result) if (result)
{ {
Locator.Current.GetService<MainWindowViewModel>()?.UpgradeApp(fileName); var service = Locator.Current.GetService<MainWindowViewModel>();
await service?.MyAppExitAsync(true);
await SQLiteHelper.Instance.DisposeDbConnectionAsync();
var toPath = Utils.GetConfigPath();
FileManager.ZipExtractToFile(fileName, toPath, "");
if (Utils.IsWindows())
{
service?.RebootAsAdmin(false);
}
else
{
service?.Shutdown();
}
} }
else else
{ {

View file

@ -343,6 +343,11 @@ namespace ServiceLib.ViewModels
_updateView?.Invoke(EViewAction.ShowHideWindow, blShow); _updateView?.Invoke(EViewAction.ShowHideWindow, blShow);
} }
public void Shutdown()
{
_updateView?.Invoke(EViewAction.Shutdown, null);
}
#endregion Actions #endregion Actions
#region Servers && Groups #region Servers && Groups
@ -509,7 +514,7 @@ namespace ServiceLib.ViewModels
} }
} }
public async Task RebootAsAdmin() public async Task RebootAsAdmin(bool blAdmin = true)
{ {
try try
{ {
@ -519,7 +524,7 @@ namespace ServiceLib.ViewModels
Arguments = Global.RebootAs, Arguments = Global.RebootAs,
WorkingDirectory = Utils.StartupPath(), WorkingDirectory = Utils.StartupPath(),
FileName = Utils.GetExePath().AppendQuotes(), FileName = Utils.GetExePath().AppendQuotes(),
Verb = "runas", Verb = blAdmin ? "runas" : null,
}; };
Process.Start(startInfo); Process.Start(startInfo);
await MyAppExitAsync(false); await MyAppExitAsync(false);