From 2cb585c222c0d941f97f28aa96a0f2bdf0c9c99d Mon Sep 17 00:00:00 2001 From: FrigaT Date: Thu, 27 Nov 2025 10:55:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=20updater.exe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReleaseUpdater.Common/Options.cs | 34 ++++++++ .../ReleaseUpdater.Common.csproj | 13 +++ ReleaseUpdater.slnx | 2 + ReleaseUpdater/ReleaseUpdater.csproj | 8 ++ ReleaseUpdater/ReleaseUpdaterFacade.cs | 17 +++- Updater.Test/Program.cs | 21 +++++ Updater.Test/Tools/Updater.exe | Bin 0 -> 227263 bytes Updater.Test/Updater.Test.csproj | 20 +++++ Updater/Core/ExitCodes.cs | 15 ++++ Updater/Core/Options.cs | 74 ------------------ Updater/Core/UpdaterApp.cs | 4 +- Updater/Program.cs | 43 +++++----- Updater/Updater.csproj | 8 ++ nuget.config | 12 +++ 14 files changed, 173 insertions(+), 98 deletions(-) create mode 100644 ReleaseUpdater.Common/Options.cs create mode 100644 ReleaseUpdater.Common/ReleaseUpdater.Common.csproj create mode 100644 Updater.Test/Program.cs create mode 100644 Updater.Test/Tools/Updater.exe create mode 100644 Updater.Test/Updater.Test.csproj create mode 100644 Updater/Core/ExitCodes.cs delete mode 100644 Updater/Core/Options.cs create mode 100644 nuget.config diff --git a/ReleaseUpdater.Common/Options.cs b/ReleaseUpdater.Common/Options.cs new file mode 100644 index 0000000..8cc64d3 --- /dev/null +++ b/ReleaseUpdater.Common/Options.cs @@ -0,0 +1,34 @@ +using ArgumentsToolkit; + +namespace ReleaseUpdater.Common; + +/// Параметры CLI для Updater.exe. +public sealed class Options +{ + [Option(nameof(ZipPath), "z", "Путь к скачанному архиву (.zip).", true)] + /// Путь к скачанному архиву (.zip). + public string ZipPath { get; set; } + + [Option(nameof(InstallPath), "i", "Целевой каталог установки.", true)] + /// Целевой каталог установки. + public string InstallPath { get; set; } + + [Option(nameof(AppExe), "a", "Имя исполняемого файла приложения для перезапуска", true)] + /// Имя исполняемого файла приложения для перезапуска (e.g., MyBot.exe). + public string AppExe { get; set; } + + [Option(nameof(RestartDelayMs), "rd", "Миллисекунды ожидания перед перезапуском", false, 500)] + /// Необязательно: подождите миллисекунды перед перезапуском. + public int RestartDelayMs { get; set; } = 500; + + [Option(nameof(UpdateDelayMs), "ud", "Миллисекунды ожидания перед обновления", false, 500)] + /// Необязательно: подождите миллисекунды перед запуском обновления. + public int UpdateDelayMs { get; set; } = 500; + + [Option(nameof(WaitProcess), "wp", "PID процесса, завершение которого необходимо дождаться", false)] + /// Необязательно: дождаться завершения процесса. + public int? WaitProcess { get; set; } = null; + + public static string Usage => + "Usage: Updater.exe --zip --installPath --appExe [--restartDelayMs ] [--updateDelayMs ] [--waitProcess ]"; +} diff --git a/ReleaseUpdater.Common/ReleaseUpdater.Common.csproj b/ReleaseUpdater.Common/ReleaseUpdater.Common.csproj new file mode 100644 index 0000000..99658e6 --- /dev/null +++ b/ReleaseUpdater.Common/ReleaseUpdater.Common.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + enable + enable + + + + + + + diff --git a/ReleaseUpdater.slnx b/ReleaseUpdater.slnx index 6430c89..d18bd49 100644 --- a/ReleaseUpdater.slnx +++ b/ReleaseUpdater.slnx @@ -2,6 +2,8 @@ + + diff --git a/ReleaseUpdater/ReleaseUpdater.csproj b/ReleaseUpdater/ReleaseUpdater.csproj index fa71b7a..00fe7f2 100644 --- a/ReleaseUpdater/ReleaseUpdater.csproj +++ b/ReleaseUpdater/ReleaseUpdater.csproj @@ -6,4 +6,12 @@ enable + + + + + + + + diff --git a/ReleaseUpdater/ReleaseUpdaterFacade.cs b/ReleaseUpdater/ReleaseUpdaterFacade.cs index f333cdc..bedfe27 100644 --- a/ReleaseUpdater/ReleaseUpdaterFacade.cs +++ b/ReleaseUpdater/ReleaseUpdaterFacade.cs @@ -90,14 +90,27 @@ public static class ReleaseUpdaterFacade if (updaterExePath == null) updaterExePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Updater.exe"); - var args = $"--zip \"{zipPath}\" --installPath \"{installPath}\" --appExe \"{appExe}\""; + + if (installPath.EndsWith("\\")) + { + installPath = installPath[0..(installPath.Length - 1)]; + } + + var updaterOptions = new Common.Options() + { + ZipPath = zipPath, + InstallPath = installPath, + AppExe = appExe, + }; if (exitCurrentApp) { int pid = Process.GetCurrentProcess().Id; - args += $" --waitProcess \"{pid}\""; + updaterOptions.WaitProcess = pid; } + var args = ArgumentsToolkit.ArgumentsParser.ToArguments(updaterOptions, true); + var process = Process.Start(new ProcessStartInfo { FileName = updaterExePath, diff --git a/Updater.Test/Program.cs b/Updater.Test/Program.cs new file mode 100644 index 0000000..ff6c6f7 --- /dev/null +++ b/Updater.Test/Program.cs @@ -0,0 +1,21 @@ +using ReleaseUpdater; + +namespace Updater.Test; + +internal class Program +{ + static async Task Main(string[] args) + { + + string installPath = AppDomain.CurrentDomain.BaseDirectory; + string appExe = "RetailUpdatesBot.exe"; + string updaterPath = Path.Combine(installPath, "Tools\\Updater.exe"); + + var url = "https://git.frigat.duckdns.org/api/v1/repos/automacon/RetailUpdatesBot/releases"; + var APIKey = "0552a77699d7506711946fc71cc6635515726bd1"; //токен + + await ReleaseUpdaterFacade.UpdateWithExternalAsync(url, APIKey, installPath, appExe, "latest", updaterPath, true); + + Console.ReadKey(); + } +} diff --git a/Updater.Test/Tools/Updater.exe b/Updater.Test/Tools/Updater.exe new file mode 100644 index 0000000000000000000000000000000000000000..8b30a80c516fa09180b1267b5646197e0543be96 GIT binary patch literal 227263 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
w+qp-Q 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 z≦6I4To5@)u}fXr{l;(64TCj1X6V+z{KG)gszcTzE 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 + + + Exe + net8.0 + enable + enable + + + + + + + + + Always + + + +
diff --git a/Updater/Core/ExitCodes.cs b/Updater/Core/ExitCodes.cs new file mode 100644 index 0000000..c32b4e7 --- /dev/null +++ b/Updater/Core/ExitCodes.cs @@ -0,0 +1,15 @@ +namespace Updater.Core; + +public static class ExitCodes +{ + /// Успешное обновление. + public const int Ok = 0; + /// Неверные аргументы командной строки. + public const int InvalidArgs = 2; + /// Ошибка извлечения. + public const int ExtractFailed = 3; + /// Ошибка установки (копировать/заменить). + public const int InstallFailed = 4; + /// Ошибка перезапуска. + public const int RestartFailed = 5; +} diff --git a/Updater/Core/Options.cs b/Updater/Core/Options.cs deleted file mode 100644 index 31ced91..0000000 --- a/Updater/Core/Options.cs +++ /dev/null @@ -1,74 +0,0 @@ -namespace Updater.Core; - -/// Параметры CLI для Updater.exe. -public sealed class Options -{ - /// Путь к скачанному архиву (.zip). - public required string ZipPath { get; init; } - - /// Целевой каталог установки. - public required string InstallPath { get; init; } - - /// Имя исполняемого файла приложения для перезапуска (e.g., MyBot.exe). - public required string AppExe { get; init; } - - /// Необязательно: подождите миллисекунды перед перезапуском. - public int RestartDelayMs { get; init; } = 500; - - /// Необязательно: подождите миллисекунды перед запуском обновления. - public int UpdateDelayMs { get; init; } = 500; - - /// Необязательно: дождаться завершения процесса. - public int? WaitProcess { get; init; } = null; - - public static string Usage => - "Usage: Updater.exe --zip --installPath --appExe [--restartDelayMs ] [--updateDelayMs ] [--waitProcess ]"; - - /// Парсинг CLI аргументов в Options. - public static Options Parse(string[] args) - { - var dict = new Dictionary(StringComparer.OrdinalIgnoreCase); - for (int i = 0; i < args.Length; i++) - { - if (!args[i].StartsWith("--")) continue; - var key = args[i][2..]; - var val = (i + 1 < args.Length && !args[i + 1].StartsWith("--")) ? args[i + 1] : "true"; - dict[key] = val; - } - - var zip = Require(dict, "zip"); - var install = Require(dict, "installPath"); - var exe = Require(dict, "appExe"); - - if (!File.Exists(zip)) throw new FileNotFoundException("Zip not found", zip); - Directory.CreateDirectory(install); - - return new 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, - UpdateDelayMs = dict.TryGetValue("updateDelayMs", out var d2) && int.TryParse(d2, out var n2) ? n2 : 500, - WaitProcess = dict.TryGetValue("waitProcess", out var pid) && int.TryParse(pid, out var pid_) ? pid_ : null, - }; - } - - private static string Require(IDictionary dict, string key) - => dict.TryGetValue(key, out var v) && !string.IsNullOrWhiteSpace(v) - ? v : throw new ArgumentException($"Missing --{key}"); -} - -public static class ExitCodes -{ - /// Успешное обновление. - public const int Ok = 0; - /// Неверные аргументы командной строки. - public const int InvalidArgs = 2; - /// Ошибка извлечения. - public const int ExtractFailed = 3; - /// Ошибка установки (копировать/заменить). - public const int InstallFailed = 4; - /// Ошибка перезапуска. - public const int RestartFailed = 5; -} diff --git a/Updater/Core/UpdaterApp.cs b/Updater/Core/UpdaterApp.cs index d267e59..b4de7c5 100644 --- a/Updater/Core/UpdaterApp.cs +++ b/Updater/Core/UpdaterApp.cs @@ -1,4 +1,6 @@ -namespace Updater.Core; +using ReleaseUpdater.Common; + +namespace Updater.Core; /// /// Управляет потоком обновлений: извлечение, установка, перезапуск. diff --git a/Updater/Program.cs b/Updater/Program.cs index cb91585..2be4ef5 100644 --- a/Updater/Program.cs +++ b/Updater/Program.cs @@ -1,5 +1,5 @@ -using System.Diagnostics; -using System.Security.Cryptography; +using ReleaseUpdater.Common; +using System.Diagnostics; using Updater.Core; namespace Updater; @@ -9,35 +9,34 @@ internal sealed class Program static int Main(string[] args) { var logger = new ConsoleLogger(); - Options? options; - try + + var parseResult = ArgumentsToolkit.ArgumentsParser.Parse(args); + + if (!parseResult.Success) { - options = Options.Parse(args); - } - catch (Exception ex) - { - logger.Error($"Arguments error: {ex.Message}"); - Console.WriteLine(Options.Usage); + logger.Error($"Arguments error:"); + parseResult.Errors.ForEach(t => logger.Error(t.Message)); return ExitCodes.InvalidArgs; } + var options = parseResult.Value!; Thread.Sleep(options.UpdateDelayMs); if (options.WaitProcess != null) - try - { - using (var proc = Process.GetProcessById(options.WaitProcess.Value)) + try { - logger.Info($"Waiting for the process to complete {options.WaitProcess}..."); - proc.WaitForExit(); // блокирует выполнение до завершения процесса - logger.Info("Process is completed."); + using (var proc = Process.GetProcessById(options.WaitProcess.Value)) + { + logger.Info($"Waiting for the process to complete {options.WaitProcess}..."); + proc.WaitForExit(); // блокирует выполнение до завершения процесса + logger.Info("Process is completed."); + } } - } - catch (ArgumentException) - { + catch (ArgumentException) + { logger.Info($"Process with PID {options.WaitProcess} not found."); - } + } var extractor = new ZipExtractor(logger); @@ -45,6 +44,8 @@ internal sealed class Program var procMgr = new ProcessManager(logger); var app = new UpdaterApp(logger, extractor, installer, procMgr); - return app.Run(options); + + var exitCode = app.Run(options); + return exitCode; } } diff --git a/Updater/Updater.csproj b/Updater/Updater.csproj index 2150e37..3c2e96f 100644 --- a/Updater/Updater.csproj +++ b/Updater/Updater.csproj @@ -7,4 +7,12 @@ enable + + + + + + + + diff --git a/nuget.config b/nuget.config new file mode 100644 index 0000000..91ba526 --- /dev/null +++ b/nuget.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file