Update Onova

pull/162/head
Alexey Golub 6 years ago
parent 77bf32aa5a
commit 6d1cfef729

@ -23,7 +23,7 @@
<PackageReference Include="ByteSize" Version="1.3.0" /> <PackageReference Include="ByteSize" Version="1.3.0" />
<PackageReference Include="Failsafe" Version="1.1.0" /> <PackageReference Include="Failsafe" Version="1.1.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
<PackageReference Include="Onova" Version="2.2.0" /> <PackageReference Include="Onova" Version="2.4.2" />
<PackageReference Include="Scriban" Version="1.2.9" /> <PackageReference Include="Scriban" Version="1.2.9" />
<PackageReference Include="Tyrrrz.Extensions" Version="1.5.1" /> <PackageReference Include="Tyrrrz.Extensions" Version="1.5.1" />
<PackageReference Include="Tyrrrz.Settings" Version="1.3.3" /> <PackageReference Include="Tyrrrz.Settings" Version="1.3.3" />

@ -1,11 +1,12 @@
using System; using System;
using System.Threading.Tasks; using System.Threading.Tasks;
using Onova; using Onova;
using Onova.Exceptions;
using Onova.Services; using Onova.Services;
namespace DiscordChatExporter.Core.Services namespace DiscordChatExporter.Core.Services
{ {
public class UpdateService public class UpdateService : IDisposable
{ {
private readonly SettingsService _settingsService; private readonly SettingsService _settingsService;
@ -23,38 +24,56 @@ namespace DiscordChatExporter.Core.Services
public async Task<Version> CheckPrepareUpdateAsync() public async Task<Version> CheckPrepareUpdateAsync()
{ {
// If auto-update is disabled - don't check for updates try
if (!_settingsService.IsAutoUpdateEnabled) {
return null; // If auto-update is disabled - don't check for updates
if (!_settingsService.IsAutoUpdateEnabled)
// Cleanup leftover files return null;
_updateManager.Cleanup();
// Check for updates // Check for updates
var check = await _updateManager.CheckForUpdatesAsync(); var check = await _updateManager.CheckForUpdatesAsync();
if (!check.CanUpdate) if (!check.CanUpdate)
return null; return null;
// Prepare the update // Prepare the update
if (!_updateManager.IsUpdatePrepared(check.LastVersion))
await _updateManager.PrepareUpdateAsync(check.LastVersion); await _updateManager.PrepareUpdateAsync(check.LastVersion);
return _updateVersion = check.LastVersion; return _updateVersion = check.LastVersion;
}
catch (UpdaterAlreadyLaunchedException)
{
return null;
}
catch (LockFileNotAcquiredException)
{
return null;
}
} }
public void FinalizeUpdate(bool needRestart) public void FinalizeUpdate(bool needRestart)
{ {
// Check if an update is pending try
if (_updateVersion == null) {
return; // Check if an update is pending
if (_updateVersion == null)
return;
// Check if the updater has already been launched // Check if the updater has already been launched
if (_updaterLaunched) if (_updaterLaunched)
return; return;
// Launch the updater // Launch the updater
_updateManager.LaunchUpdater(_updateVersion, needRestart); _updateManager.LaunchUpdater(_updateVersion, needRestart);
_updaterLaunched = true; _updaterLaunched = true;
}
catch (UpdaterAlreadyLaunchedException)
{
}
catch (LockFileNotAcquiredException)
{
}
} }
public void Dispose() => _updateManager.Dispose();
} }
} }
Loading…
Cancel
Save