41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
namespace Neta.Tray;
|
|
|
|
public static class ShutdownCommand
|
|
{
|
|
public static void Run()
|
|
{
|
|
Run(AppContext.BaseDirectory);
|
|
}
|
|
|
|
public static void Run(string baseDirectory)
|
|
{
|
|
var backendExePath = Path.Combine(baseDirectory, "backend.exe");
|
|
var processManager = new BackendProcessManager();
|
|
var runtime = RuntimeInfoStore.LoadFromInstalledConfig(baseDirectory);
|
|
if (runtime is not null)
|
|
{
|
|
using var httpClient = new HttpClient();
|
|
var statusClient = new StatusClient(httpClient);
|
|
try
|
|
{
|
|
statusClient.StopAsync(runtime, CancellationToken.None).GetAwaiter().GetResult();
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
|
|
processManager.WaitForExit(runtime.Pid, TimeSpan.FromSeconds(10));
|
|
if (processManager.IsBackendProcessAlive(runtime.Pid))
|
|
{
|
|
processManager.KillProcess(runtime.Pid);
|
|
}
|
|
}
|
|
|
|
processManager.KillInstalledBackendProcesses(backendExePath);
|
|
}
|
|
|
|
public static void OpenExistingInstance()
|
|
{
|
|
}
|
|
}
|