From 1647717915f247aae23096defc808d22258370b6 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Sun, 6 Aug 2017 22:40:08 +0100 Subject: [PATCH] #1460 #865 First pass at the auto updater, inital tests on windows seem good! --- src/Ombi.Schedule/JobSetup.cs | 2 +- .../Jobs/Ombi/OmbiAutomaticUpdater.cs | 43 +++++++++++++------ src/Ombi.Updater/Installer.cs | 4 +- .../Properties/launchSettings.json | 3 +- 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/Ombi.Schedule/JobSetup.cs b/src/Ombi.Schedule/JobSetup.cs index c212fad4f..a4f05795b 100644 --- a/src/Ombi.Schedule/JobSetup.cs +++ b/src/Ombi.Schedule/JobSetup.cs @@ -21,7 +21,7 @@ namespace Ombi.Schedule { RecurringJob.AddOrUpdate(() => Cacher.CacheContent(), Cron.Hourly); RecurringJob.AddOrUpdate(() => RadarrCacher.CacheContent(), Cron.Hourly); - //RecurringJob.AddOrUpdate(() => Updater.Update(), Cron.Hourly); + RecurringJob.AddOrUpdate(() => Updater.Update(), Cron.Minutely); } } } diff --git a/src/Ombi.Schedule/Jobs/Ombi/OmbiAutomaticUpdater.cs b/src/Ombi.Schedule/Jobs/Ombi/OmbiAutomaticUpdater.cs index d7a0bfba2..8938410f7 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/OmbiAutomaticUpdater.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/OmbiAutomaticUpdater.cs @@ -12,6 +12,7 @@ using Microsoft.Extensions.Options; using Ombi.Api.Service; using Ombi.Api.Service.Models; using Ombi.Helpers; +using System.IO.Compression; namespace Ombi.Schedule.Ombi { @@ -92,23 +93,41 @@ namespace Ombi.Schedule.Ombi return; } } + if(download == null) + { + return; + } // Download it - await DownloadAsync(download.Url, Path.Combine(currentLocation, "Ombi.zip")); + var extension = download.Name.Split('.').Last(); + var zipDir = Path.Combine(currentLocation, $"Ombi.{extension}"); + await DownloadAsync(download.Url, zipDir); + var tempPath = Path.Combine(currentLocation, "TempUpdate"); + // Extract it + using (var files = ZipFile.OpenRead(zipDir)) + { + foreach (var entry in files.Entries) + { + // Temp Path + Directory.CreateDirectory(tempPath); + + entry.ExtractToFile(Path.Combine(tempPath, entry.FullName)); + } + } // There must be an update - //var start = new ProcessStartInfo - //{ - // UseShellExecute = false, - // CreateNoWindow = true, - // FileName = "Ombi.Updater.exe", - // Arguments = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) - //}; - //using (var proc = new Process { StartInfo = start }) - //{ - // proc.Start(); - //} + var start = new ProcessStartInfo + { + UseShellExecute = false, + CreateNoWindow = true, + FileName = "Ombi.Updater", + Arguments = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + " " +extension , + }; + using (var proc = new Process { StartInfo = start }) + { + proc.Start(); + } } else diff --git a/src/Ombi.Updater/Installer.cs b/src/Ombi.Updater/Installer.cs index f31ebb110..7501d11f0 100644 --- a/src/Ombi.Updater/Installer.cs +++ b/src/Ombi.Updater/Installer.cs @@ -33,8 +33,8 @@ namespace Ombi.Updater var start = new ProcessStartInfo { UseShellExecute = false, - CreateNoWindow = true, - FileName = Path.Combine(options.ApplicationPath,"Ombi.exe") + FileName = Path.Combine(options.ApplicationPath,"Ombi.exe"), + WorkingDirectory = options.ApplicationPath }; using (var proc = new Process { StartInfo = start }) { diff --git a/src/Ombi.Updater/Properties/launchSettings.json b/src/Ombi.Updater/Properties/launchSettings.json index 499695f7b..834fa8fec 100644 --- a/src/Ombi.Updater/Properties/launchSettings.json +++ b/src/Ombi.Updater/Properties/launchSettings.json @@ -1,7 +1,8 @@ { "profiles": { "Ombi.Updater": { - "commandName": "Project" + "commandName": "Project", + "commandLineArgs": "C:\\Users\\Jamie\\Desktop\\Test\\" } } } \ No newline at end of file