using CareFix.Agent; using CareFix.Core; // CareFix.Agent.exe configure -> interactive setup (run as Administrator) // CareFix.Agent.exe test -> checks both SQL logins and the server connection, then exits // CareFix.Agent.exe -> runs as a Windows service (or in a console for troubleshooting) if (args.Length > 0 && args[0].Equals("configure", StringComparison.OrdinalIgnoreCase)) { Setup.Configure(); return; } AgentConfig cfg; try { cfg = AgentConfig.Load(); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); Environment.ExitCode = 2; return; } if (args.Length > 0 && args[0].Equals("test", StringComparison.OrdinalIgnoreCase)) { Environment.ExitCode = await Setup.TestAsync(cfg); return; } var builder = Host.CreateApplicationBuilder(args); builder.Services.AddWindowsService(o => o.ServiceName = "CareFix Agent"); builder.Services.AddSingleton(cfg); builder.Services.AddSingleton(); builder.Services.AddHttpClient("carefix", c => c.Timeout = TimeSpan.FromSeconds(60)); builder.Services.AddHostedService(); builder.Logging.AddEventLog(s => s.SourceName = "CareFix Agent"); builder.Build().Run();