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);