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;
@ -22,27 +23,36 @@ namespace DiscordChatExporter.Core.Services
} }
public async Task<Version> CheckPrepareUpdateAsync() public async Task<Version> CheckPrepareUpdateAsync()
{
try
{ {
// If auto-update is disabled - don't check for updates // If auto-update is disabled - don't check for updates
if (!_settingsService.IsAutoUpdateEnabled) if (!_settingsService.IsAutoUpdateEnabled)
return null; return null;
// Cleanup leftover files
_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)
{
try
{ {
// Check if an update is pending // Check if an update is pending
if (_updateVersion == null) if (_updateVersion == null)
@ -56,5 +66,14 @@ namespace DiscordChatExporter.Core.Services
_updateManager.LaunchUpdater(_updateVersion, needRestart); _updateManager.LaunchUpdater(_updateVersion, needRestart);
_updaterLaunched = true; _updaterLaunched = true;
} }
catch (UpdaterAlreadyLaunchedException)
{
}
catch (LockFileNotAcquiredException)
{
}
}
public void Dispose() => _updateManager.Dispose();
} }
} }
Loading…
Cancel
Save