feat(installer): start worker via Process.Start, drop schtasks stop
This commit is contained in:
@@ -1,19 +1,28 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
using ClaudeDo.Installer.Core;
|
using ClaudeDo.Installer.Core;
|
||||||
|
|
||||||
namespace ClaudeDo.Installer.Steps;
|
namespace ClaudeDo.Installer.Steps;
|
||||||
|
|
||||||
public sealed class StartWorkerStep : IInstallStep
|
public sealed class StartWorkerStep : IInstallStep
|
||||||
{
|
{
|
||||||
public const string TaskName = "ClaudeDoWorker";
|
|
||||||
|
|
||||||
public string Name => "Start Worker";
|
public string Name => "Start Worker";
|
||||||
|
|
||||||
public async Task<StepResult> ExecuteAsync(InstallContext ctx, IProgress<string> progress, CancellationToken ct)
|
public Task<StepResult> ExecuteAsync(InstallContext ctx, IProgress<string> progress, CancellationToken ct)
|
||||||
{
|
{
|
||||||
|
var workerExe = Path.Combine(ctx.InstallDirectory, "worker", "ClaudeDo.Worker.exe");
|
||||||
|
if (!File.Exists(workerExe))
|
||||||
|
return Task.FromResult(StepResult.Fail($"Worker executable not found: {workerExe}"));
|
||||||
|
|
||||||
progress.Report("Starting worker...");
|
progress.Report("Starting worker...");
|
||||||
var (exit, output) = await ProcessRunner.RunAsync("schtasks.exe", $"/Run /TN \"{TaskName}\"", null, progress, ct);
|
try
|
||||||
if (exit != 0)
|
{
|
||||||
return StepResult.Fail($"schtasks /Run failed (exit {exit}): {output}");
|
Process.Start(new ProcessStartInfo(workerExe) { UseShellExecute = true });
|
||||||
return StepResult.Ok();
|
return Task.FromResult(StepResult.Ok());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return Task.FromResult(StepResult.Fail($"Failed to start worker: {ex.Message}"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,9 +13,6 @@ public sealed class StopWorkerStep : IInstallStep
|
|||||||
|
|
||||||
public async Task<StepResult> ExecuteAsync(InstallContext ctx, IProgress<string> progress, CancellationToken ct)
|
public async Task<StepResult> ExecuteAsync(InstallContext ctx, IProgress<string> progress, CancellationToken ct)
|
||||||
{
|
{
|
||||||
progress.Report("Stopping worker task (if running)...");
|
|
||||||
await ProcessRunner.RunAsync("schtasks.exe", $"/End /TN \"{TaskName}\"", null, progress, ct);
|
|
||||||
|
|
||||||
progress.Report("Stopping worker process (if running)...");
|
progress.Report("Stopping worker process (if running)...");
|
||||||
var installDir = ctx.InstallDirectory;
|
var installDir = ctx.InstallDirectory;
|
||||||
foreach (var p in Process.GetProcessesByName(ProcessName))
|
foreach (var p in Process.GetProcessesByName(ProcessName))
|
||||||
|
|||||||
Reference in New Issue
Block a user