diff --git a/src/ClaudeDo.Installer/Core/UninstallRunner.cs b/src/ClaudeDo.Installer/Core/UninstallRunner.cs index 84fc1e2..f651553 100644 --- a/src/ClaudeDo.Installer/Core/UninstallRunner.cs +++ b/src/ClaudeDo.Installer/Core/UninstallRunner.cs @@ -34,9 +34,10 @@ public sealed class UninstallRunner $"Cannot uninstall: worker did not stop cleanly. {stopResult.ErrorMessage} " + "Kill the worker manually and re-run uninstall."); - // 3) Unregister the autostart task, and best-effort remove any legacy service. - progress.Report("Removing autostart task..."); - await ProcessRunner.RunAsync("schtasks.exe", $"/Delete /TN \"{StopWorkerStep.TaskName}\" /F", null, progress, ct); + // 3) Best-effort removal of the legacy scheduled task and Windows service + // (older installs; current installs autostart via a Startup-folder shortcut). + progress.Report("Removing legacy autostart task..."); + await ProcessRunner.RunAsync("schtasks.exe", $"/Delete /TN \"{StopWorkerStep.LegacyTaskName}\" /F", null, progress, ct); await ProcessRunner.RunAsync("sc.exe", "delete ClaudeDoWorker", null, progress, ct); // 3b) Remove Apps & Features registry entry (best-effort). diff --git a/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs b/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs index f132cdb..753249a 100644 --- a/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs +++ b/src/ClaudeDo.Installer/Steps/StopWorkerStep.cs @@ -6,7 +6,7 @@ namespace ClaudeDo.Installer.Steps; public sealed class StopWorkerStep : IInstallStep { - public const string TaskName = "ClaudeDoWorker"; + public const string LegacyTaskName = "ClaudeDoWorker"; public const string ProcessName = "ClaudeDo.Worker"; public string Name => "Stop Worker";