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>();
}
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);
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
{

View file

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