Skip to main content

uninstall

Run the headless CLI uninstall path for a local OpenClaw Companion dev build (--uninstall --dry-run, then --confirm-destructive) to remove the WSL gateway distro, gateway CLI/service, gateway identity/tokens, exec approvals, autostart entries, node-context state, Local AI, Tailscale state, and other AppData artifacts. Use when the user asks to uninstall, clean up, or reset a local dev install/gateway, or to test the uninstall engine.

インストールへ移動

ソース情報

リポジトリ
openclaw/openclaw-windows-node
ソースの最終更新活動
2026年9月9日 23:31
検出された SKILL.md の言語
英語
スター
2,122
フォーク
295

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
uninstall
description
Run the headless CLI uninstall path for a local OpenClaw Companion dev build (--uninstall --dry-run, then --confirm-destructive) to remove the WSL gateway distro, gateway CLI/service, gateway identity/tokens, exec approvals, autostart entries, node-context state, Local AI, Tailscale state, and other AppData artifacts. Use when the user asks to uninstall, clean up, or reset a local dev install/gateway, or to test the uninstall engine.
# Uninstall (dev build) `OpenClaw.Tray.WinUI.exe` embeds the SetupEngine and accepts `--uninstall` directly, so no installer is required to exercise this path; a local `dotnet build` output works. This walks a real (not just installed-via-Inno-Setup) uninstall of dev/test state: WSL gateway distro, `openclaw` CLI inside WSL, gateway systemd service, Tailscale state, and the tray's AppData files. This is destructive. Confirm with the user before the final `--confirm-destructive` run, and call out anything it will touch that isn't disposable dev state (e.g. a WSL distro or Tailscale session actually in use). ## Procedure 1. **Build with the dev identity, for the matching architecture.** `.\build.ps1` alone defaults to release identity even in a Debug configuration, and a release-identity exe would unregister the real `OpenClawGateway` distro and mutate `%APPDATA%\OpenClawTray` instead of the `-Dev` copies below (the output path is identical either way, so nothing later in this procedure would catch that mistake). Always build with `-DevBuild`, and verify the marker before proceeding: ```powershell .\build.ps1 -DevBuild # skip only if you already built with -DevBuild $arm64 = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture -eq [System.Runtime.InteropServices.Architecture]::Arm64 $arch = if ($arm64) { 'win-arm64' } else { 'win-x64' } $outDir = "src\OpenClaw.Tray.WinUI\bin\Debug\net10.0-windows10.0.22621.0\$arch" $exe = "$outDir\OpenClaw.Tray.WinUI.exe" $identity = (Get-Content "$outDir\app-identity.txt" -Raw).Trim() if ($identity -ne 'dev') { throw "Build output identity is '$identity', not 'dev' - rebuild with -DevBuild." } $pathOverrides = 'OPENCLAW_TRAY_DATA_DIR', 'OPENCLAW_TRAY_LOCALAPPDATA_DIR', 'OPENCLAW_TRAY_LOCAL_DATA_DIR', 'OPENCLAW_STATE_DIR' $activeOverrides = $pathOverrides | Where-Object { -not [string]::IsNullOrWhiteSpace([Environment]::GetEnvironmentVariable($_)) } if ($activeOverrides) { throw "Refusing destructive uninstall while path overrides are set: $($activeOverrides -join ', ')" } ``` 2. **Stop only the dev instance, by PID.** A background `OpenClaw.Tray.WinUI.exe` (e.g. the tray icon) holds its own log/journal files open, which makes later steps fail to delete the AppData Logs directory. A release-identity tray can share the same process name, so match on the resolved `$exe` path and confirm before stopping; this repo kills processes by PID only, never by name (see `scripts/dev-reset-rebuild-launch.ps1`): ```powershell $exePath = (Resolve-Path $exe).Path $devProcs = Get-Process OpenClaw.Tray.WinUI -ErrorAction SilentlyContinue | Where-Object { $_.Path -eq $exePath } $devProcs | Format-Table Id, Path -AutoSize # confirm these are the dev instance before stopping $devProcs | ForEach-Object { Stop-Process -Id $_.Id -Force } ``` 3. **Dry-run first**, capturing output and exit code (a bare shell invocation can swallow the exit code for a WinUI apphost; use `Start-Process -Wait -PassThru`): ```powershell $p = Start-Process -FilePath $exe -ArgumentList '--uninstall','--dry-run' -PassThru -Wait ` -RedirectStandardOutput out.log -RedirectStandardError err.log $p.ExitCode Get-Content out.log ``` Review the "Would rollback: ..." lines for each of the ~37 steps. Note the `--data-dir` / `--distro-name` printed at the top; dev-branch builds use `OpenClawTray-Dev` / `OpenClawGateway-Dev`, separate from a real install's `OpenClawTray` / `OpenClawGateway`. Confirm that the printed data directories are exactly `%APPDATA%\OpenClawTray-Dev` and `%LOCALAPPDATA%\OpenClawTray-Dev`. Stop if they point anywhere else. 4. **Check for real state the dry-run doesn't surface**, e.g. a live WSL distro: ```powershell wsl -l -v ``` If the distro named in step 3's output is present, flag to the user that it will be unregistered (`wsl --unregister`), permanently deleting its filesystem. The dry-run only logs rollback step IDs, not the concrete files each step would touch. If it matters to the user's situation, inspect `%APPDATA%\OpenClawTray-Dev\` directly before consenting (gateway registry, `windows-node-context.json`, Local AI config, Tailscale state). 5. **Confirm with the user**, then run the real uninstall the same way: ```powershell $p = Start-Process -FilePath $exe -ArgumentList '--uninstall','--confirm-destructive' -PassThru -Wait ` -RedirectStandardOutput out2.log -RedirectStandardError err2.log $p.ExitCode Get-Content out2.log ``` 6. **Verify** the specific artifacts each rollback step is supposed to clean up: not the AppData roots themselves. `TrayArtifactCleanup` (registry/files/settings only, no WSL calls) and the WSL/gateway rollback steps between them reset or remove selected files and records in place; neither deletes `%APPDATA%\OpenClawTray[-Dev]` or `%LOCALAPPDATA%\OpenClawTray[-Dev]`, so asserting those roots are gone will report a successful run as failed: ```powershell wsl -l -v # target distro should no longer be listed # The current run's own log/journal remain under Logs\Setup (they are open during # cleanup); success = that directory holds only uninstall-engine-<this-run> files Get-ChildItem "$env:APPDATA\OpenClawTray-Dev\Logs\Setup" # only this run's uninstall-engine-* files expected Test-Path "$env:LOCALAPPDATA\OpenClawTray-Dev\Logs" # should be False Test-Path "$env:LOCALAPPDATA\OpenClawTray-Dev\run.marker" # should be False Test-Path "$env:APPDATA\OpenClawTray-Dev\exec-approvals.json" # should be False Test-Path "$env:LOCALAPPDATA\OpenClawTray-Dev\windows-node-context.json" # should be False, if it existed # settings.json: GatewayUrl removed; EnableNodeMode/AutoStart reset to false unless # other gateway records remain # Get-ItemProperty 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run' -Name OpenClawTray-Dev -ErrorAction SilentlyContinue # should error/be absent (autostart registry key removed) ``` The current run's own active log and journal under `%APPDATA%\OpenClawTray-Dev\Logs\Setup` are expected to remain: the Setup Engine still holds them open when `TrayArtifactCleanup` runs, so the `Failed to delete AppData Logs directory` warning is normal. A `Failed to delete...` warning naming any other file, or leftover files from earlier runs, means a process is still holding them open (see step 2). ## Notes - Log and journal for each run are printed at the end of stdout, under `%APPDATA%\OpenClawTray[-Dev]\Logs\Setup\uninstall-engine-<timestamp>.jsonl`. - For a real installed app (not a dev build), the user-facing path is **Settings → Apps → Installed apps → OpenClaw Companion → Uninstall**; see `docs/SETUP.md#uninstalling` and the README's Uninstall section. This skill is for exercising the underlying CLI path directly, e.g. for dev cleanup or testing the uninstall engine itself.
GitHubで見る