Skip to content

Uninstall and recovery

If an install gets wedged — stale daemon registration, partial Installomator deploy, leftover state from an upgrade — a clean uninstall script ships inside the app bundle:

Terminal window
sudo "/Applications/App Auto-Patch.app/Contents/Resources/uninstall.sh"

Cleanest path: open AAP and click Settings → About → Reset Helper before running the script. The script can stop the LaunchDaemon and delete every file App Auto-Patch put on disk, but it can’t call SMAppService.unregister() (that API only runs from inside the running .app), so SMAppService’s Background Task Management record can otherwise persist across the uninstall and bleed into the next install. Reset Helper does the proper unregister + register cycle and leaves BTM clean. If you skip this step, the next install will still auto-heal itself on first launch — the GUI’s isOperational check cross-references launchd’s actual loaded-daemon list and triggers a re-registration when SMAppService is lying about its .enabled state — it just costs one extra approval prompt. It stops the root helper LaunchDaemon, removes /Library/Application Support/AppAutoPatch, removes any leftover /Library/LaunchDaemons/xyz.techitout.appAutoPatch.roothelper.plist, removes per-user preferences and logs for every user on the Mac, and removes the App Auto-Patch.app bundle itself (and any pre-rename AppAutoPatch.app left over from build ≤ 35), and removes staged installers in /private/tmp/AAPStage. After that, reinstall the latest .pkg for a true fresh first-run. Useful flags:

  • --keep-app — wipe state but keep /Applications/App Auto-Patch.app in place. Re-launching the app starts the first-run wizard from scratch.
  • --quiet / -q — suppress non-error output.
  • --help — show the full options list. If the executable bit ever gets stripped, invoke through zsh explicitly:
Terminal window
sudo /bin/zsh "/Applications/App Auto-Patch.app/Contents/Resources/uninstall.sh"

The script is safe to run when AppAutoPatch is partially or not installed — every step is guarded by an existence check.