From 6a018136029bcd9f4ae9d6ec86a4b14d174cc630 Mon Sep 17 00:00:00 2001 From: FrigaT Date: Tue, 25 Nov 2025 09:32:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{GiteaReleaseProvider.cs => ReleaseProvider.cs} | 2 +- ReleaseUpdater/ReleaseUpdaterFacade.cs | 6 +++--- Updater/Core/Options.cs | 10 +++++++--- Updater/Program.cs | 3 +++ 4 files changed, 14 insertions(+), 7 deletions(-) rename ReleaseUpdater/{GiteaReleaseProvider.cs => ReleaseProvider.cs} (98%) diff --git a/ReleaseUpdater/GiteaReleaseProvider.cs b/ReleaseUpdater/ReleaseProvider.cs similarity index 98% rename from ReleaseUpdater/GiteaReleaseProvider.cs rename to ReleaseUpdater/ReleaseProvider.cs index 9f5e754..00a7f88 100644 --- a/ReleaseUpdater/GiteaReleaseProvider.cs +++ b/ReleaseUpdater/ReleaseProvider.cs @@ -6,7 +6,7 @@ namespace ReleaseUpdater; /// /// Провайдер для получения информации о релизах из Github / Gitea API. /// -public sealed class GiteaReleaseProvider +public sealed class ReleaseProvider { private static readonly JsonSerializerOptions JsonOpts = new(JsonSerializerDefaults.Web); diff --git a/ReleaseUpdater/ReleaseUpdaterFacade.cs b/ReleaseUpdater/ReleaseUpdaterFacade.cs index 6b69f84..9544b1b 100644 --- a/ReleaseUpdater/ReleaseUpdaterFacade.cs +++ b/ReleaseUpdater/ReleaseUpdaterFacade.cs @@ -29,7 +29,7 @@ public static class ReleaseUpdaterFacade /// public static async Task> GetVersionsAsync(string apiUrl, string? token = null) { - var provider = new GiteaReleaseProvider(); + var provider = new ReleaseProvider(); var releases = await provider.GetReleasesAsync(apiUrl, token); return releases.Select(r => r.TagName).ToList(); } @@ -42,7 +42,7 @@ public static class ReleaseUpdaterFacade { try { - var provider = new GiteaReleaseProvider(); + var provider = new ReleaseProvider(); var release = await provider.FindReleaseAsync(apiUrl, versionOrLatest, token) ?? throw new Exception("Release not found"); @@ -76,7 +76,7 @@ public static class ReleaseUpdaterFacade { try { - var provider = new GiteaReleaseProvider(); + var provider = new ReleaseProvider(); var release = await provider.FindReleaseAsync(apiUrl, versionOrLatest, token) ?? throw new Exception("Release not found"); diff --git a/Updater/Core/Options.cs b/Updater/Core/Options.cs index 1faabd3..abec43f 100644 --- a/Updater/Core/Options.cs +++ b/Updater/Core/Options.cs @@ -12,11 +12,14 @@ public sealed class Options /// Имя исполняемого файла приложения для перезапуска (e.g., MyBot.exe). public required string AppExe { get; init; } - /// Необязательно: подождите миллисекунды перед перезапуском (льготный период). + /// Необязательно: подождите миллисекунды перед перезапуском. public int RestartDelayMs { get; init; } = 500; + /// Необязательно: подождите миллисекунды перед запуском обновления. + public int UpdateDelayMs { get; init; } = 500; + public static string Usage => - "Usage: Updater.exe --zip --installPath --appExe [--restartDelayMs ]"; + "Usage: Updater.exe --zip --installPath --appExe [--restartDelayMs ] [--updateDelayMs ]"; /// Папрсинг CLI аргументов в Options. public static Options Parse(string[] args) @@ -42,7 +45,8 @@ public sealed class Options ZipPath = Path.GetFullPath(zip), InstallPath = Path.GetFullPath(install), AppExe = exe, - RestartDelayMs = dict.TryGetValue("restartDelayMs", out var d) && int.TryParse(d, out var n) ? n : 500 + RestartDelayMs = dict.TryGetValue("restartDelayMs", out var d) && int.TryParse(d, out var n) ? n : 500, + UpdateDelayMs = dict.TryGetValue("updateDelayMs", out var d2) && int.TryParse(d2, out var n2) ? n2 : 500 }; } diff --git a/Updater/Program.cs b/Updater/Program.cs index b5bd072..861e88d 100644 --- a/Updater/Program.cs +++ b/Updater/Program.cs @@ -19,6 +19,9 @@ internal sealed class Program return ExitCodes.InvalidArgs; } + + Thread.Sleep(options.UpdateDelayMs); + var extractor = new ZipExtractor(logger); var installer = new SafeFileInstaller(logger); var procMgr = new ProcessManager(logger);