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(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; } }