From 2f1dcdc102a33614063498df2b49e4f9522a78db Mon Sep 17 00:00:00 2001 From: mika kuns Date: Mon, 1 Jun 2026 12:10:28 +0200 Subject: [PATCH] feat(installer): start worker via Process.Start, drop schtasks stop --- .../Steps/StartWorkerStep.cs | 23 +++++++++++++------ .../Steps/StopWorkerStep.cs | 3 --- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/ClaudeDo.Installer/Steps/StartWorkerStep.cs b/src/ClaudeDo.Installer/Steps/StartWorkerStep.cs index 89aa811..af16d32 100644 --- a/src/ClaudeDo.Installer/Steps/StartWorkerStep.cs +++ b/src/ClaudeDo.Installer/Steps/StartWorkerStep.cs @@ -1,19 +1,28 @@ +using System.Diagnostics; +using System.IO; using ClaudeDo.Installer.Core; namespace ClaudeDo.Installer.Steps; public sealed class StartWorkerStep : IInstallStep { - public const string TaskName = "ClaudeDoWorker"; - public string Name => "Start Worker"; - public async Task ExecuteAsync(InstallContext ctx, IProgress progress, CancellationToken ct) + public Task ExecuteAsync(InstallContext ctx, IProgress 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..."); - var (exit, output) = await ProcessRunner.RunAsync("schtasks.exe", $"/Run /TN \"{TaskName}\"", null, progress, ct); - if (exit != 0) - return StepResult.Fail($"schtasks /Run failed (exit {exit}): {output}"); - return StepResult.Ok(); + try + { + Process.Start(new ProcessStartInfo(workerExe) { UseShellExecute = true }); + return Task.FromResult(StepResult.Ok()); + } + catch (Exception ex) + { + return Task.FromResult(StepResult.Fail($"Failed to start worker: {ex.Message}")); + } } } diff --git a/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs b/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs index 3843f86..f132cdb 100644 --- a/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs +++ b/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs @@ -13,9 +13,6 @@ public sealed class StopWorkerStep : IInstallStep public async Task ExecuteAsync(InstallContext ctx, IProgress 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)..."); var installDir = ctx.InstallDirectory; foreach (var p in Process.GetProcessesByName(ProcessName))