Добавлена задержка перед обновлением

This commit is contained in:
2025-11-25 09:32:09 +03:00
parent 60a3ec4dc7
commit 6a01813602
4 changed files with 14 additions and 7 deletions

View File

@@ -6,7 +6,7 @@ namespace ReleaseUpdater;
/// <summary> /// <summary>
/// Провайдер для получения информации о релизах из Github / Gitea API. /// Провайдер для получения информации о релизах из Github / Gitea API.
/// </summary> /// </summary>
public sealed class GiteaReleaseProvider public sealed class ReleaseProvider
{ {
private static readonly JsonSerializerOptions JsonOpts = new(JsonSerializerDefaults.Web); private static readonly JsonSerializerOptions JsonOpts = new(JsonSerializerDefaults.Web);

View File

@@ -29,7 +29,7 @@ public static class ReleaseUpdaterFacade
/// </summary> /// </summary>
public static async Task<IReadOnlyList<string>> GetVersionsAsync(string apiUrl, string? token = null) public static async Task<IReadOnlyList<string>> GetVersionsAsync(string apiUrl, string? token = null)
{ {
var provider = new GiteaReleaseProvider(); var provider = new ReleaseProvider();
var releases = await provider.GetReleasesAsync(apiUrl, token); var releases = await provider.GetReleasesAsync(apiUrl, token);
return releases.Select(r => r.TagName).ToList(); return releases.Select(r => r.TagName).ToList();
} }
@@ -42,7 +42,7 @@ public static class ReleaseUpdaterFacade
{ {
try try
{ {
var provider = new GiteaReleaseProvider(); var provider = new ReleaseProvider();
var release = await provider.FindReleaseAsync(apiUrl, versionOrLatest, token) var release = await provider.FindReleaseAsync(apiUrl, versionOrLatest, token)
?? throw new Exception("Release not found"); ?? throw new Exception("Release not found");
@@ -76,7 +76,7 @@ public static class ReleaseUpdaterFacade
{ {
try try
{ {
var provider = new GiteaReleaseProvider(); var provider = new ReleaseProvider();
var release = await provider.FindReleaseAsync(apiUrl, versionOrLatest, token) var release = await provider.FindReleaseAsync(apiUrl, versionOrLatest, token)
?? throw new Exception("Release not found"); ?? throw new Exception("Release not found");

View File

@@ -12,11 +12,14 @@ public sealed class Options
/// <summary>Имя исполняемого файла приложения для перезапуска (e.g., MyBot.exe).</summary> /// <summary>Имя исполняемого файла приложения для перезапуска (e.g., MyBot.exe).</summary>
public required string AppExe { get; init; } public required string AppExe { get; init; }
/// <summary>Необязательно: подождите миллисекунды перед перезапуском (льготный период).</summary> /// <summary>Необязательно: подождите миллисекунды перед перезапуском.</summary>
public int RestartDelayMs { get; init; } = 500; public int RestartDelayMs { get; init; } = 500;
/// <summary>Необязательно: подождите миллисекунды перед запуском обновления.</summary>
public int UpdateDelayMs { get; init; } = 500;
public static string Usage => public static string Usage =>
"Usage: Updater.exe --zip <path.zip> --installPath <dir> --appExe <file.exe> [--restartDelayMs <int>]"; "Usage: Updater.exe --zip <path.zip> --installPath <dir> --appExe <file.exe> [--restartDelayMs <int>] [--updateDelayMs <int>]";
/// <summary>Папрсинг CLI аргументов в Options.</summary> /// <summary>Папрсинг CLI аргументов в Options.</summary>
public static Options Parse(string[] args) public static Options Parse(string[] args)
@@ -42,7 +45,8 @@ public sealed class Options
ZipPath = Path.GetFullPath(zip), ZipPath = Path.GetFullPath(zip),
InstallPath = Path.GetFullPath(install), InstallPath = Path.GetFullPath(install),
AppExe = exe, 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
}; };
} }

View File

@@ -19,6 +19,9 @@ internal sealed class Program
return ExitCodes.InvalidArgs; return ExitCodes.InvalidArgs;
} }
Thread.Sleep(options.UpdateDelayMs);
var extractor = new ZipExtractor(logger); var extractor = new ZipExtractor(logger);
var installer = new SafeFileInstaller(logger); var installer = new SafeFileInstaller(logger);
var procMgr = new ProcessManager(logger); var procMgr = new ProcessManager(logger);