52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using ReleaseUpdater.Common;
|
|
using System.Diagnostics;
|
|
using Updater.Core;
|
|
|
|
namespace Updater;
|
|
|
|
internal sealed class Program
|
|
{
|
|
static int Main(string[] args)
|
|
{
|
|
var logger = new ConsoleLogger();
|
|
|
|
var parseResult = ArgumentsToolkit.ArgumentsParser.Parse<Options>(args);
|
|
|
|
if (!parseResult.Success)
|
|
{
|
|
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))
|
|
{
|
|
logger.Info($"Waiting for the process to complete {options.WaitProcess}...");
|
|
proc.WaitForExit(); // блокирует выполнение до завершения процесса
|
|
logger.Info("Process is completed.");
|
|
}
|
|
}
|
|
catch (ArgumentException)
|
|
{
|
|
logger.Info($"Process with PID {options.WaitProcess} not found.");
|
|
}
|
|
|
|
|
|
var extractor = new ZipExtractor(logger);
|
|
var installer = new SafeFileInstaller(logger);
|
|
var procMgr = new ProcessManager(logger);
|
|
var app = new UpdaterApp(logger, extractor, installer, procMgr);
|
|
|
|
|
|
var exitCode = app.Run(options);
|
|
return exitCode;
|
|
}
|
|
}
|