feat(installer): start worker via Process.Start, drop schtasks stop

This commit is contained in:
mika kuns
2026-06-01 12:10:28 +02:00
parent 133f2d2f1d
commit 2f1dcdc102
2 changed files with 16 additions and 10 deletions

View File

@@ -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}"));
}
} }
} }

View File

@@ -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))