Skip to content

Update Fleet-maintained apps - #50150

Merged
allenhouchins merged 2 commits into
mainfrom
fma-2607291435
Jul 29, 2026
Merged

Update Fleet-maintained apps#50150
allenhouchins merged 2 commits into
mainfrom
fma-2607291435

Conversation

@fleet-release

@fleet-release fleet-release commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Automated ingestion of latest Fleet-maintained app data.

Summary by CodeRabbit

  • New Versions

    • Updated release metadata and installer details for AnyBurn, BetterDisplay, Blender, ChatGPT, ChatWise, CLion, DataGrip, Dataspell, Draw.io Desktop, Elgato Camera Hub, Firefox, Firefox Nightly, GIMP, GoLand, IntelliJ IDEA (and variants), Keka, Kitty, LibreOffice, MacPacker, MuseScore, Nudge, OBS, PhpStorm, PyCharm (CE), Rider, RubyMine, RustRover, Spyder, Typinator, Visual Studio Code, VLC, WebStorm, Wispr Flow, XLD, and others.
    • Refreshed app version detection and package checksums accordingly.
  • Bug Fixes

    • Improved uninstall reliability on macOS and Windows by removing unintended extra cleanup actions while keeping application and user-data removal.

Generated automatically with cmd/maintained-apps.
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

Updated maintained-app manifests for new releases, including version checks, installer URLs, checksums, and the Elgato Camera Hub installation script. Updated numerous macOS uninstall references and scripts to remove additional unscoped deletion commands while retaining application bundle and user-data cleanup. Replaced the AnyBurn Windows uninstaller with a registry-aware, timeout-controlled cleanup flow and updated its patch metadata.

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description is too vague and omits the required template sections, including related issue, checklist items, testing, and other required details. Expand it to match the repository template: add a related issue line and fill the checklist/testing sections, or remove irrelevant items if they don't apply.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately describes the broad change to Fleet-maintained apps.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fma-2607291435

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ee/maintained-apps/outputs/firefox/darwin.json`:
- Line 19: Update the Firefox cleanup commands in ref "94fa5a3b" that call rmdir
so they use /Users/$LOGGED_IN_USER/Library/... paths instead of single-quoted
~/Library/... paths, ensuring the user’s Mozilla directories are removed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: eadbe188-ecd4-48cf-b650-417f889eb7e9

📥 Commits

Reviewing files that changed from the base of the PR and between f67d9a5 and bf4f447.

📒 Files selected for processing (38)
  • ee/maintained-apps/outputs/anyburn/windows.json
  • ee/maintained-apps/outputs/betterdisplay/darwin.json
  • ee/maintained-apps/outputs/blender/darwin.json
  • ee/maintained-apps/outputs/chatgpt/darwin.json
  • ee/maintained-apps/outputs/chatwise/darwin.json
  • ee/maintained-apps/outputs/clion/darwin.json
  • ee/maintained-apps/outputs/datagrip/darwin.json
  • ee/maintained-apps/outputs/dataspell/darwin.json
  • ee/maintained-apps/outputs/drawio/darwin.json
  • ee/maintained-apps/outputs/elgato-camera-hub/darwin.json
  • ee/maintained-apps/outputs/firefox/darwin.json
  • ee/maintained-apps/outputs/firefox@nightly/darwin.json
  • ee/maintained-apps/outputs/gimp/darwin.json
  • ee/maintained-apps/outputs/goland/darwin.json
  • ee/maintained-apps/outputs/inkscape/darwin.json
  • ee/maintained-apps/outputs/intellij-idea-ce/darwin.json
  • ee/maintained-apps/outputs/intellij-idea/darwin.json
  • ee/maintained-apps/outputs/keka/darwin.json
  • ee/maintained-apps/outputs/kitty/darwin.json
  • ee/maintained-apps/outputs/libreoffice/darwin.json
  • ee/maintained-apps/outputs/macpacker/darwin.json
  • ee/maintained-apps/outputs/musescore/darwin.json
  • ee/maintained-apps/outputs/nudge/darwin.json
  • ee/maintained-apps/outputs/obs/darwin.json
  • ee/maintained-apps/outputs/phpstorm/darwin.json
  • ee/maintained-apps/outputs/protonvpn/windows.json
  • ee/maintained-apps/outputs/pycharm-ce/darwin.json
  • ee/maintained-apps/outputs/pycharm/darwin.json
  • ee/maintained-apps/outputs/rider/darwin.json
  • ee/maintained-apps/outputs/rubymine/darwin.json
  • ee/maintained-apps/outputs/rustrover/darwin.json
  • ee/maintained-apps/outputs/spyder/darwin.json
  • ee/maintained-apps/outputs/typinator/darwin.json
  • ee/maintained-apps/outputs/visual-studio-code/darwin.json
  • ee/maintained-apps/outputs/vlc/darwin.json
  • ee/maintained-apps/outputs/webstorm/darwin.json
  • ee/maintained-apps/outputs/wispr-flow/darwin.json
  • ee/maintained-apps/outputs/xld/darwin.json

"refs": {
"b5e4c76e": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nTMPDIR=$(dirname \"$(realpath \"$INSTALLER_PATH\")\")\n# functions\n\nquit_and_track_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n eval \"export $var_name=0\"\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n eval \"export $var_name=0\"\n return\n fi\n\n # App was running, mark it for relaunch\n eval \"export $var_name=1\"\n echo \"Application '$bundle_id' was running; will relaunch after installation.\"\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\nrelaunch_application() {\n local bundle_id=\"$1\"\n local var_name=\"APP_WAS_RUNNING_$(echo \"$bundle_id\" | tr '.-' '__')\"\n local was_running\n\n # Check if the app was running before installation\n eval \"was_running=\\$$var_name\"\n if [[ \"$was_running\" != \"1\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping relaunching application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Relaunching application '$bundle_id'...\"\n\n # Launch the app in the logged-in user's GUI session. Apps launched by root\n # won't register with the user's Dock/GUI, so run 'open' as the console user.\n # Use 'launchctl asuser' to bootstrap into the console user's Mach namespace\n # and GUI session — 'sudo -u' alone doesn't do this, which can cause\n # LSOpenURLsWithRole() failures even when 'open' exits 0.\n local open_status=0\n if [[ $EUID -eq 0 ]]; then\n local console_uid\n console_uid=$(id -u \"$console_user\")\n /bin/launchctl asuser \"$console_uid\" sudo -u \"$console_user\" open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n else\n open -b \"$bundle_id\" >/dev/null 2>&1 || open_status=$?\n fi\n\n if [[ $open_status -eq 0 ]]; then\n echo \"Application '$bundle_id' relaunched successfully.\"\n else\n echo \"Failed to relaunch application '$bundle_id'.\"\n fi\n}\n\n\n# extract contents\nMOUNT_POINT=$(mktemp -d /tmp/dmg_mount_XXXXXX)\nyes | hdiutil attach -plist -nobrowse -readonly -mountpoint \"$MOUNT_POINT\" \"$INSTALLER_PATH\" || exit 1\nsudo cp -R \"$MOUNT_POINT\"/* \"$TMPDIR\"\nhdiutil detach \"$MOUNT_POINT\" || true\n# copy to the applications folder\nquit_and_track_application 'org.mozilla.firefox'\nif [ -d \"$APPDIR/Firefox.app\" ]; then\n\tsudo mv \"$APPDIR/Firefox.app\" \"$TMPDIR/Firefox.app.bkp\"\nfi\nsudo cp -R \"$TMPDIR/Firefox.app\" \"$APPDIR\"\nrelaunch_application 'org.mozilla.firefox'\n",
"b85c0267": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'org.mozilla.firefox'\nsudo rm -rf \"$APPDIR/Firefox.app\"\nsudo rm -rf 'firefox'\nsudo rmdir '~/Library/Application Support/Mozilla'\nsudo rmdir '~/Library/Caches/Mozilla'\nsudo rmdir '~/Library/Caches/Mozilla/updates'\nsudo rmdir '~/Library/Caches/Mozilla/updates/Applications'\ntrash $LOGGED_IN_USER '/Library/Logs/DiagnosticReports/firefox_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.mozilla.firefox.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/firefox_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/Mozilla/updates/Applications/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/org.mozilla.crashreporter'\ntrash $LOGGED_IN_USER '~/Library/Caches/org.mozilla.firefox'\ntrash $LOGGED_IN_USER '~/Library/Preferences/org.mozilla.crashreporter.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/org.mozilla.firefox.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/org.mozilla.firefox.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/org.mozilla.firefox'\n"
"94fa5a3b": "#!/bin/bash\n\n# variables\nAPPDIR=\"/Applications/\"\nLOGGED_IN_USER=$(scutil <<< \"show State:/Users/ConsoleUser\" | awk '/Name :/ { print $3 }')\n# functions\n\nquit_application() {\n local bundle_id=\"$1\"\n local timeout_duration=10\n\n # check if the application is running\n local app_running\n app_running=$(osascript -e \"application id \\\"$bundle_id\\\" is running\" 2>/dev/null)\n if [[ \"$app_running\" != \"true\" ]]; then\n return\n fi\n\n local console_user\n console_user=$(stat -f \"%Su\" /dev/console)\n if [[ -z \"$console_user\" || \"$console_user\" == \"root\" || \"$console_user\" == \"loginwindow\" ]]; then\n echo \"Not logged into a non-root GUI; skipping quitting application ID '$bundle_id'.\"\n return\n fi\n\n echo \"Quitting application '$bundle_id'...\"\n\n # try to quit the application within the timeout period\n local quit_success=false\n SECONDS=0\n while (( SECONDS < timeout_duration )); do\n if osascript -e \"tell application id \\\"$bundle_id\\\" to quit\" >/dev/null 2>&1; then\n if ! pgrep -f \"$bundle_id\" >/dev/null 2>&1; then\n echo \"Application '$bundle_id' quit successfully.\"\n quit_success=true\n break\n fi\n fi\n sleep 1\n done\n\n if [[ \"$quit_success\" = false ]]; then\n echo \"Application '$bundle_id' did not quit.\"\n fi\n}\n\n\ntrash() {\n local logged_in_user=\"$1\"\n local target_file=\"$2\"\n local timestamp=\"$(date +%Y-%m-%d-%s)\"\n local rand=\"$(jot -r 1 0 99999)\"\n\n # replace ~ with /Users/$logged_in_user\n if [[ \"$target_file\" == ~* ]]; then\n target_file=\"/Users/$logged_in_user${target_file:1}\"\n fi\n\n local trash=\"/Users/$logged_in_user/.Trash\"\n\n # If the target contains glob characters, expand it and move each match.\n if [[ \"$target_file\" == *[*?[]* ]]; then\n local file file_name\n local matched=false\n local i=0\n # compgen -G expands the (quoted) pattern itself, so paths containing\n # spaces glob correctly; reading line by line keeps each match intact.\n while IFS= read -r file; do\n [[ -n \"$file\" ]] || continue\n [[ -e \"$file\" || -L \"$file\" ]] || continue\n matched=true\n i=$((i + 1))\n file_name=\"$(basename \"$file\")\"\n echo \"removing $file.\"\n # The per-match counter keeps matches that share a basename from\n # overwriting each other in the trash.\n mv -f \"$file\" \"$trash/${file_name}_${timestamp}_${rand}_${i}\"\n done < <(compgen -G \"$target_file\" 2>/dev/null)\n if [[ \"$matched\" == false ]]; then\n echo \"$target_file doesn't exist.\"\n fi\n return\n fi\n\n local file_name=\"$(basename \"${target_file}\")\"\n\n if [[ -e \"$target_file\" ]]; then\n echo \"removing $target_file.\"\n mv -f \"$target_file\" \"$trash/${file_name}_${timestamp}_${rand}\"\n else\n echo \"$target_file doesn't exist.\"\n fi\n}\n\nquit_application 'org.mozilla.firefox'\nsudo rm -rf \"$APPDIR/Firefox.app\"\nsudo rmdir '~/Library/Application Support/Mozilla'\nsudo rmdir '~/Library/Caches/Mozilla'\nsudo rmdir '~/Library/Caches/Mozilla/updates'\nsudo rmdir '~/Library/Caches/Mozilla/updates/Applications'\ntrash $LOGGED_IN_USER '/Library/Logs/DiagnosticReports/firefox_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.mozilla.firefox.sfl*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/CrashReporter/firefox_*'\ntrash $LOGGED_IN_USER '~/Library/Application Support/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/Mozilla/updates/Applications/Firefox'\ntrash $LOGGED_IN_USER '~/Library/Caches/org.mozilla.crashreporter'\ntrash $LOGGED_IN_USER '~/Library/Caches/org.mozilla.firefox'\ntrash $LOGGED_IN_USER '~/Library/Preferences/org.mozilla.crashreporter.plist'\ntrash $LOGGED_IN_USER '~/Library/Preferences/org.mozilla.firefox.plist'\ntrash $LOGGED_IN_USER '~/Library/Saved Application State/org.mozilla.firefox.savedState'\ntrash $LOGGED_IN_USER '~/Library/WebKit/org.mozilla.firefox'\n",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "File excerpt:"
sed -n '1,40p' ee/maintained-apps/outputs/firefox/darwin.json | cat -n

echo
echo "Shell behavior probe for sudo + rmdir with single-quoted tilde:"
tmpdir="$(mktemp -d)"
mkdir -p "$tmpdir/root-home/Library/Caches/Mozilla"
(
  export LOGGED_IN_USER="$(whoami)"
  eval 'sudo rmdir ~/Library/Application\ Support/Mozilla'
  eval 'sudo rm -rf ~/Library/Caches/Mozilla'
  # For this sandbox without sudo tooling, show the exact command/path bash would parse/expands when not guarded by sudo:
  sh -c 'echo $0; pwd; find ~/Library/Caches/Mozilla -maxdepth 2 -print 2>/dev/null || true' "$LOGGED_IN_USER"
)
tmpdir_removed="$(basename "$tmpdir")"
sudo rm -rf "/tmp/$tmpdir_removed" || true

echo
echo "Find exact single-quoted tilde rmdir lines:"
python3 - <<'PY'
from pathlib import Path
p=Path('ee/maintained-apps/outputs/firefox/darwin.json')
text=p.read_text()
start=text.find('"94fa5a3b": "#!/bin/bash')
end=text.find('";\n}', start)
if end==-1: end=text.find('";\n}]', start)
script='#!/bin/bash'+text[start+8:end].replace('\\n','\n').replace('\\"','"').replace('\\\\','\\').strip()
for i,line in enumerate(script.splitlines(),1):
    if 'sudo rmdir' in line and "~" in line:
        print(f"{i}: {line}")
PY

Repository: fleetdm/fleet

Length of output: 9039


Do not single-quote the ~ paths.

At ref "94fa5a3b", sudo rmdir '~/Library/...' passes a literal ~ to rmdir; Bash does not expand tildes inside single quotes, so these cleanup commands leave Firefox’s Mozilla directories behind. Use /Users/$LOGGED_IN_USER/Library/... instead.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ee/maintained-apps/outputs/firefox/darwin.json` at line 19, Update the
Firefox cleanup commands in ref "94fa5a3b" that call rmdir so they use
/Users/$LOGGED_IN_USER/Library/... paths instead of single-quoted ~/Library/...
paths, ensuring the user’s Mozilla directories are removed.

@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/anyburn/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/betterdisplay/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 5a2c4908 -> 8bc96e39 ===

--- /tmp/old.WEWYys	2026-07-29 15:01:25.097836439 +0000
+++ /tmp/new.9Vf0Of	2026-07-29 15:01:25.098836438 +0000
@@ -94,7 +94,6 @@
 
 quit_application 'pro.betterdisplay.BetterDisplay'
 sudo rm -rf "$APPDIR/BetterDisplay.app"
-sudo rm -rf 'betterdisplaycli'
 trash $LOGGED_IN_USER '~/Library/Application Support/BetterDisplay'
 trash $LOGGED_IN_USER '~/Library/Application Support/BetterDummy'
 trash $LOGGED_IN_USER '~/Library/Caches/pro.betterdisplay.BetterDisplay'

ee/maintained-apps/outputs/blender/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 46f9b939 -> 2def9e18 ===

--- /tmp/old.Kh02DN	2026-07-29 15:01:25.156836383 +0000
+++ /tmp/new.ttnpN2	2026-07-29 15:01:25.157836382 +0000
@@ -53,6 +53,5 @@
 }
 
 sudo rm -rf "$APPDIR/Blender.app"
-sudo rm -rf 'blender'
 trash $LOGGED_IN_USER '~/Library/Application Support/Blender'
 trash $LOGGED_IN_USER '~/Library/Saved Application State/org.blenderfoundation.blender.savedState'

ee/maintained-apps/outputs/chatgpt/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chatwise/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clion/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 51845cc5 -> 9c00be7f ===

--- /tmp/old.9N6xGZ	2026-07-29 15:01:25.285836260 +0000
+++ /tmp/new.c9hFZ4	2026-07-29 15:01:25.285836260 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/CLion.app"
-sudo rm -rf 'clion'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/CLion2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/CLion2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/CLion2026.2'

ee/maintained-apps/outputs/datagrip/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 1c2e1bad -> ae9af028 ===

--- /tmp/old.RhsIwr	2026-07-29 15:01:25.333836215 +0000
+++ /tmp/new.lQlD7V	2026-07-29 15:01:25.333836215 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/DataGrip.app"
-sudo rm -rf 'datagrip'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/DataGrip*'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/DataGrip*'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/DataGrip*'

ee/maintained-apps/outputs/dataspell/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 5a54b3d9 -> ad6f369b ===

--- /tmp/old.da1Vlz	2026-07-29 15:01:25.402836149 +0000
+++ /tmp/new.ApCbYk	2026-07-29 15:01:25.402836149 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/DataSpell.app"
-sudo rm -rf 'dataspell'
 trash $LOGGED_IN_USER '~/Library/Application Support/DataSpell*'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/DataSpell*'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/DataSpell*'

ee/maintained-apps/outputs/drawio/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 19c87f7a -> a088fe93 ===

--- /tmp/old.9x4BQi	2026-07-29 15:01:25.459836095 +0000
+++ /tmp/new.bfWvYc	2026-07-29 15:01:25.459836095 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/draw.io.app"
-sudo rm -rf 'drawio'
 trash $LOGGED_IN_USER '~/Library/Application Support/draw.io'
 trash $LOGGED_IN_USER '~/Library/Caches/com.jgraph.drawio.desktop'
 trash $LOGGED_IN_USER '~/Library/Caches/com.jgraph.drawio.desktop.ShipIt'

ee/maintained-apps/outputs/elgato-camera-hub/darwin.json

=== Install // a546f0ff -> 7e0ff465 ===

--- /tmp/old.jI2qYS	2026-07-29 15:01:25.524836033 +0000
+++ /tmp/new.A72kyw	2026-07-29 15:01:25.524836033 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'com.elgato.CameraHub'
-sudo installer -pkg "$TMPDIR/CameraHub_2.3.0.7229.pkg" -target /
+sudo installer -pkg "$TMPDIR/CameraHub_2.3.0.7275.pkg" -target /
 relaunch_application 'com.elgato.CameraHub'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/firefox/darwin.json

=== Install Script (no changes) ===
=== Uninstall // b85c0267 -> 94fa5a3b ===

--- /tmp/old.9uohhj	2026-07-29 15:01:25.572835987 +0000
+++ /tmp/new.WRndCo	2026-07-29 15:01:25.573835986 +0000
@@ -94,7 +94,6 @@
 
 quit_application 'org.mozilla.firefox'
 sudo rm -rf "$APPDIR/Firefox.app"
-sudo rm -rf 'firefox'
 sudo rmdir '~/Library/Application Support/Mozilla'
 sudo rmdir '~/Library/Caches/Mozilla'
 sudo rmdir '~/Library/Caches/Mozilla/updates'

ee/maintained-apps/outputs/firefox@nightly/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/gimp/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 0fe4b61b -> 2439dd3b ===

--- /tmp/old.XZfAAr	2026-07-29 15:01:25.676835889 +0000
+++ /tmp/new.R6UcFa	2026-07-29 15:01:25.676835889 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/GIMP.app"
-sudo rm -rf 'gimp'
 trash $LOGGED_IN_USER '~/Library/Application Support/Gimp'
 trash $LOGGED_IN_USER '~/Library/Preferences/org.gimp.gimp-3.2.plist'
 trash $LOGGED_IN_USER '~/Library/Saved Application State/org.gimp.gimp-3.2.savedState'

ee/maintained-apps/outputs/goland/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 20571185 -> beccbf96 ===

--- /tmp/old.QrIVws	2026-07-29 15:01:25.724835843 +0000
+++ /tmp/new.xpf1lB	2026-07-29 15:01:25.724835843 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/GoLand.app"
-sudo rm -rf 'goland'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/GoLand'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/GoLand2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/GoLand2026.2'

ee/maintained-apps/outputs/inkscape/darwin.json

=== Install Script (no changes) ===
=== Uninstall // d16b3796 -> 7879206c ===

--- /tmp/old.J0fQ2j	2026-07-29 15:01:25.797835773 +0000
+++ /tmp/new.mtwuz9	2026-07-29 15:01:25.797835773 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/Inkscape.app"
-sudo rm -rf 'inkscape'
 trash $LOGGED_IN_USER '~/.config/inkscape'
 trash $LOGGED_IN_USER '~/Library/Application Support/Inkscape'
 trash $LOGGED_IN_USER '~/Library/Application Support/org.inkscape.Inkscape'

ee/maintained-apps/outputs/intellij-idea-ce/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 840f39ef -> 5a817315 ===

--- /tmp/old.wghqCm	2026-07-29 15:01:25.870835704 +0000
+++ /tmp/new.1ULpDT	2026-07-29 15:01:25.870835704 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/IntelliJ IDEA CE.app"
-sudo rm -rf 'idea-ce'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/IdeaIC2025.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/IdeaIC2025.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/IdeaIC2025.2'

ee/maintained-apps/outputs/intellij-idea/darwin.json

=== Install Script (no changes) ===
=== Uninstall // acfd723a -> 2a100e79 ===

--- /tmp/old.poRFta	2026-07-29 15:01:25.920835656 +0000
+++ /tmp/new.CeYdNv	2026-07-29 15:01:25.920835656 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/IntelliJ IDEA.app"
-sudo rm -rf 'idea'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/IntelliJIdea2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/IntelliJIdea2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/IntelliJIdea2026.2'

ee/maintained-apps/outputs/keka/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 4e1f0a29 -> 4b5f9669 ===

--- /tmp/old.e1JR5e	2026-07-29 15:01:25.980835599 +0000
+++ /tmp/new.zaBsJa	2026-07-29 15:01:25.980835599 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/Keka.app"
-sudo rm -rf 'keka'
 trash $LOGGED_IN_USER '~/Library/Application Scripts/*.group.com.aone.keka'
 trash $LOGGED_IN_USER '~/Library/Application Scripts/com.aone.keka'
 trash $LOGGED_IN_USER '~/Library/Application Scripts/com.aone.keka.KekaFinderIntegration'

ee/maintained-apps/outputs/kitty/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 610c592a -> 6b9c4431 ===

--- /tmp/old.po6eYM	2026-07-29 15:01:26.028835554 +0000
+++ /tmp/new.nl3gap	2026-07-29 15:01:26.029835553 +0000
@@ -53,8 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/kitty.app"
-sudo rm -rf 'kitty'
-sudo rm -rf 'kitten'
 trash $LOGGED_IN_USER '~/.config/kitty'
 trash $LOGGED_IN_USER '~/Library/Caches/kitty'
 trash $LOGGED_IN_USER '~/Library/Preferences/kitty'

ee/maintained-apps/outputs/libreoffice/darwin.json

=== Install Script (no changes) ===
=== Uninstall // f1fecf0c -> 8faa5ae7 ===

--- /tmp/old.1lEfsX	2026-07-29 15:01:26.076835508 +0000
+++ /tmp/new.Eh8m8B	2026-07-29 15:01:26.076835508 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/LibreOffice.app"
-sudo rm -rf 'soffice'
 trash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.libreoffice.script.sfl*'
 trash $LOGGED_IN_USER '~/Library/Application Support/LibreOffice'
 trash $LOGGED_IN_USER '~/Library/Preferences/org.libreoffice.script.plist'

ee/maintained-apps/outputs/macpacker/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/musescore/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 608c93fa -> f39a3d70 ===

--- /tmp/old.bVHhfY	2026-07-29 15:01:26.177835412 +0000
+++ /tmp/new.v3LSBF	2026-07-29 15:01:26.177835412 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/MuseScore 4.app"
-sudo rm -rf 'mscore'
 trash $LOGGED_IN_USER '~/Library/Application Support/MuseScore'
 trash $LOGGED_IN_USER '~/Library/Caches/MuseScore'
 trash $LOGGED_IN_USER '~/Library/Caches/org.musescore.MuseScore'

ee/maintained-apps/outputs/nudge/darwin.json

=== Install Script (no changes) ===
=== Uninstall // c8a788e1 -> 1f8d2677 ===

--- /tmp/old.aiq57r	2026-07-29 15:01:26.254835339 +0000
+++ /tmp/new.9NM4wf	2026-07-29 15:01:26.255835338 +0000
@@ -120,5 +120,4 @@
 
 remove_pkg_files 'com.github.macadmins.Nudge'
 forget_pkg 'com.github.macadmins.Nudge'
-sudo rm -rf 'nudge'
 trash $LOGGED_IN_USER '~/Library/Preferences/com.github.macadmins.Nudge.plist'

ee/maintained-apps/outputs/obs/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 54899728 -> cc3469d9 ===

--- /tmp/old.USx0DN	2026-07-29 15:01:26.304835291 +0000
+++ /tmp/new.rMhtFM	2026-07-29 15:01:26.305835290 +0000
@@ -54,7 +54,6 @@
 
 sudo rm -rf '/Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin'
 sudo rm -rf "$APPDIR/OBS.app"
-sudo rm -rf 'obs'
 trash $LOGGED_IN_USER '~/Library/Application Support/obs-studio'
 trash $LOGGED_IN_USER '~/Library/HTTPStorages/com.obsproject.obs-studio'
 trash $LOGGED_IN_USER '~/Library/Preferences/com.obsproject.obs-studio.plist'

ee/maintained-apps/outputs/phpstorm/darwin.json

=== Install Script (no changes) ===
=== Uninstall // f215b72e -> d37d13f0 ===

--- /tmp/old.MvNO4r	2026-07-29 15:01:26.354835244 +0000
+++ /tmp/new.b8ycJ6	2026-07-29 15:01:26.354835244 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/PhpStorm.app"
-sudo rm -rf 'phpstorm'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/consentOptions'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/PhpStorm2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/PhpStorm2026.2'

ee/maintained-apps/outputs/protonvpn/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/pycharm-ce/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 6c73a201 -> 4b8156ff ===

--- /tmp/old.KQFftj	2026-07-29 15:01:26.472835132 +0000
+++ /tmp/new.20l3gd	2026-07-29 15:01:26.473835131 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/PyCharm CE.app"
-sudo rm -rf 'pycharm-ce'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/PyCharmCE2025.2'
 trash $LOGGED_IN_USER '~/Library/Application Support/PyCharm2025.2'
 trash $LOGGED_IN_USER '~/Library/Caches/com.apple.python/Applications/PyCharm CE.app'

ee/maintained-apps/outputs/pycharm/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 10f65fea -> 617acdb0 ===

--- /tmp/old.DHTnrX	2026-07-29 15:01:26.520835086 +0000
+++ /tmp/new.gG8bwK	2026-07-29 15:01:26.520835086 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/PyCharm.app"
-sudo rm -rf 'pycharm'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/PyCharm2026.2'
 trash $LOGGED_IN_USER '~/Library/Application Support/PyCharm2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/PyCharm2026.2'

ee/maintained-apps/outputs/rider/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 22db20ac -> 51f5bcc6 ===

--- /tmp/old.QVDDU5	2026-07-29 15:01:26.569835039 +0000
+++ /tmp/new.gWAzwW	2026-07-29 15:01:26.570835038 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/Rider.app"
-sudo rm -rf 'rider'
 trash $LOGGED_IN_USER '~/Library/Application Support/Rider2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/Rider2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/Rider2026.2'

ee/maintained-apps/outputs/rubymine/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 02966e3f -> 060b0265 ===

--- /tmp/old.fhZLty	2026-07-29 15:01:26.621834990 +0000
+++ /tmp/new.z63u1K	2026-07-29 15:01:26.621834990 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/RubyMine.app"
-sudo rm -rf 'rubymine'
 trash $LOGGED_IN_USER '~/Library/Application Support/RubyMine2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/RubyMine2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/RubyMine2026.2'

ee/maintained-apps/outputs/rustrover/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 42cbf565 -> ae06496f ===

--- /tmp/old.fdWPON	2026-07-29 15:01:26.684834930 +0000
+++ /tmp/new.oaWC3v	2026-07-29 15:01:26.684834930 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/RustRover.app"
-sudo rm -rf 'rustrover'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/RustRover2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/RustRover2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/RustRover2026.2'

ee/maintained-apps/outputs/spyder/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/typinator/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/visual-studio-code/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/vlc/darwin.json

=== Install Script (no changes) ===
=== Uninstall // c823c001 -> 8db8e61f ===

--- /tmp/old.a7UQjf	2026-07-29 15:01:26.909834716 +0000
+++ /tmp/new.jhhUz2	2026-07-29 15:01:26.909834716 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/VLC.app"
-sudo rm -rf 'vlc'
 trash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.videolan.vlc.sfl*'
 trash $LOGGED_IN_USER '~/Library/Application Support/org.videolan.vlc'
 trash $LOGGED_IN_USER '~/Library/Application Support/VLC'

ee/maintained-apps/outputs/webstorm/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 6d11a5af -> 6c5cf19b ===

--- /tmp/old.kbtOGQ	2026-07-29 15:01:26.959834669 +0000
+++ /tmp/new.vrygtj	2026-07-29 15:01:26.959834669 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/WebStorm.app"
-sudo rm -rf 'webstorm'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/WebStorm2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/com.apple.nsurlsessiond/Downloads/com.jetbrains.WebStorm'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/WebStorm2026.2'

ee/maintained-apps/outputs/wispr-flow/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/xld/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 898594dd -> 795ac485 ===

--- /tmp/old.Yn9UqS	2026-07-29 15:01:27.070834563 +0000
+++ /tmp/new.e9sPI8	2026-07-29 15:01:27.070834563 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/XLD.app"
-sudo rm -rf 'xld'
 trash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/jp.tmkk.xld.sfl*'
 trash $LOGGED_IN_USER '~/Library/Application Support/XLD'
 trash $LOGGED_IN_USER '~/Library/Caches/jp.tmkk.XLD'

Reworks the AnyBurn uninstall script to avoid Start-Process -Wait timeouts with NSIS relaunch behavior by invoking uninstall in-place with `_?=` and a bounded wait. It now searches HKLM/HKCU uninstall entries by exact display name, kills lingering processes, removes leftover registry entries/shortcuts/install directory, and returns success when already absent. The generated `windows.json` was updated to reference the new uninstall script content.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ee/maintained-apps/inputs/winget/scripts/anyburn_uninstall.ps1`:
- Around line 88-96: Update the shortcut cleanup in the uninstall script to
remove the SYSTEM-targeted APPDATA and USERPROFILE entries from $shortcuts,
retaining only the machine-wide ProgramData and PUBLIC paths. Also remove or
adjust the related HKCU uninstall search so it does not imply coverage of
logged-in-user profiles when running as SYSTEM.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 834af3d8-563b-4045-b629-5a48e77619a2

📥 Commits

Reviewing files that changed from the base of the PR and between bf4f447 and 91540c1.

📒 Files selected for processing (2)
  • ee/maintained-apps/inputs/winget/scripts/anyburn_uninstall.ps1
  • ee/maintained-apps/outputs/anyburn/windows.json

Comment on lines +88 to +96
$shortcuts = @(
"$env:ProgramData\Microsoft\Windows\Start Menu\Programs\$displayName",
"$env:APPDATA\Microsoft\Windows\Start Menu\Programs\$displayName",
"$env:PUBLIC\Desktop\$displayName.lnk",
"$env:USERPROFILE\Desktop\$displayName.lnk"
)
foreach ($shortcut in $shortcuts) {
Remove-Item -LiteralPath $shortcut -Recurse -Force -ErrorAction SilentlyContinue
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check how sibling winget uninstall scripts handle per-user paths under SYSTEM.
fd -t f -e ps1 . ee/maintained-apps/inputs/winget/scripts \
  --exec rg -n 'USERPROFILE|APPDATA|HKCU|Get-ChildItem.*Users' {} \; | head -60

Repository: fleetdm/fleet

Length of output: 4527


🏁 Script executed:

#!/bin/bash
set -euo pipefail

target="ee/maintained-apps/inputs/winget/scripts/anyburn_uninstall.ps1"

echo "## target file outline/context"
wc -l "$target"
sed -n '1,140p' "$target" | cat -n

echo
echo "## per-user/system hints in target"
rg -n 'HKCU|APPDATA|USERPROFILE|Get-ChildItem.*Users|Start Menu|Desktop|Remove-Item|AnyBurn|displayName' "$target"

echo
echo "## related anyburn files"
git ls-files | rg '(^|/)anyburn|winget/scripts' | head -80

Repository: fleetdm/fleet

Length of output: 11553


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "## search SYSTEM/profile execution hints"
rg -n 'SYSTEM|RunAsLocalSystem|SERVICE_ACCOUNT|SERVICE_ACCOUNT_LOCAL|ApplicableToInstallation|RunAsUser|RunAsService|SYSTEM|winget|maintained-apps|installer args' ee/maintained-apps ee -g '*.{yaml,yml,json,ps1,md}' | head -200

echo
echo "## manifest context"
cat -n "ee/maintained-apps/inputs/winget/anyburn.json" | sed -n '1,180p'

echo
echo "## compare few uninstall scripts for script entrypoint metadata"
for f in $(git ls-files 'ee/maintained-apps/inputs/winget/scripts/*'* | sed -n '1,10p'); do
  echo "### $f"
  rg -n 'ApplicableToInstallation|RunAsUser|RunAsService|RunAsLocalSystem|SYSTEM|SCRIPT|manifest|winget' "$f" -C 2 || true
done

Repository: fleetdm/fleet

Length of output: 50369


🌐 Web query:

Microsoft Windows NSIS user start menu link C:\Users PUBLIC Desktop systemprofile

💡 Result:

In Nullsoft Scriptable Install System (NSIS), the location of shortcuts created in the Start Menu or on the Desktop is controlled by the SetShellVarContext command [1][2]. To create shortcuts for all users (which targets the Public Desktop and the All Users Start Menu), you must use: SetShellVarContext all CreateShortcut "$DESKTOP\YourShortcut.lnk" "$INSTDIR\YourProgram.exe" CreateShortcut "$SMPROGRAMS\YourFolder\YourShortcut.lnk" "$INSTDIR\YourProgram.exe" Setting the context to all instructs NSIS to point constants like $DESKTOP and $SMPROGRAMS to the system-wide folders instead of the current user's profile [3][2][4]. Regarding C:\Users\...\systemprofile: If your installer is running in a service context, or via a deployment tool (such as GPO, SCCM, or other automation) that is incorrectly executing as the LocalSystem account without a proper user session, file operations may default to C:\Windows\System32\config\systemprofile (or C:\Users\systemprofile on some configurations) instead of the intended user profile or Public folder [5]. This is generally an indication that the installer is running with an unexpected or elevated service-level identity rather than in the interactive context of the logged-in user [5]. Key considerations: 1. Permissions: Creating shortcuts in all (All Users) locations requires administrative privileges [6][2]. You should check for these permissions using the UserInfo plugin before attempting to install to system-wide directories [2]. 2. Context: The default context is current [2]. If you do not explicitly set SetShellVarContext all, shortcuts will be placed in the current user's personal profile folders [3][2]. 3. Deployment issues: If you observe shortcuts appearing in systemprofile, ensure that your deployment mechanism is configured to run as the target user or is correctly handling shell environment variables for the intended destination [5].

Citations:


🌐 Web query:

Microsoft NSIS documentation CreateShortcutsLink setalluserslinksentry $SMPROGRAMS $ALLUSERSPROFILE

💡 Result:

In NSIS, there is no command or entry named "CreateShortcutsLink setalluserslinks". To create shortcuts for "All Users" in the Start Menu or on the Desktop, you must use the SetShellVarContext command [1][2]. The SetShellVarContext command changes the context for shell folder constants (such as $SMPROGRAMS, $DESKTOP, and $QUICKLAUNCH) [1][2]. By default, this context is set to 'current', which points to the current user's profile [3][1]. When you set it to 'all', these constants are redirected to the corresponding "All Users" (or "Public") folders [1][4]. To create shortcuts for all users, use the following pattern [5][4][6]: SetShellVarContext all CreateDirectory "$SMPROGRAMS\YourApp" CreateShortcut "$SMPROGRAMS\YourApp\YourApp.lnk" "$INSTDIR\YourApp.exe" Important considerations: 1. Permissions: Writing to "All Users" folders generally requires administrative privileges [1][2]. It is recommended to use the UserInfo plug-in to verify the user has sufficient rights before attempting to create these shortcuts [1][2]. 2. Scope: SetShellVarContext only affects the context of the installer or uninstaller in which it is called [2][7]. If you need shortcuts to be created by the installer and removed correctly by the uninstaller, you must call SetShellVarContext all in both the installer and the uninstaller sections [5][2][7]. 3. Fallback: If the "All Users" folder is not available on the operating system, NSIS will automatically fall back to the current user folder [1][2].

Citations:


Remove SYSTEM-misleading shortcut cleanup entries.

Running this script as SYSTEM makes $env:APPDATA and $env:USERPROFILE resolve to the SYSTEM profile, so the APPDATA shortcut path and the HKCU uninstall search can only see per-installer-user artifacts, not logged-in-user profiles. Keep the machine-wide ProgramData and PUBLIC cleanup, but either enumerate real user profiles for per-user leftovers or remove the dead SYSTEM-targeted entries to avoid implying coverage.

🧰 Tools
🪛 PSScriptAnalyzer (1.25.0)

[warning] Missing BOM encoding for non-ASCII encoded file 'anyburn_uninstall.ps1'

(PSUseBOMForUnicodeEncodedFile)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ee/maintained-apps/inputs/winget/scripts/anyburn_uninstall.ps1` around lines
88 - 96, Update the shortcut cleanup in the uninstall script to remove the
SYSTEM-targeted APPDATA and USERPROFILE entries from $shortcuts, retaining only
the machine-wide ProgramData and PUBLIC paths. Also remove or adjust the related
HKCU uninstall search so it does not imply coverage of logged-in-user profiles
when running as SYSTEM.

@github-actions

Copy link
Copy Markdown
Contributor

Script Diff Results

ee/maintained-apps/outputs/anyburn/windows.json

=== Install Script (no changes) ===
=== Uninstall // 26daa547 -> 1bb84a61 ===

--- /tmp/old.h1wWdf	2026-07-29 15:13:05.851553386 +0000
+++ /tmp/new.x849Rg	2026-07-29 15:13:05.851553386 +0000
@@ -1,87 +1,110 @@
-# Fleet extracts name from installer (EXE) and saves it to PACKAGE_ID
-# variable
-# AnyBurn registers DisplayName "AnyBurn" (NSIS installer); silent uninstall
-# uses the NSIS /S flag.
-$softwareName = "AnyBurn"
-
-# Match the DisplayName exactly to avoid uninstalling AnyBurn Pro or other
-# similarly named software.
-$uninstallArgs = "/S"
-
-$machineKey = `
- 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'
-$machineKey32on64 = `
- 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
-
-$exitCode = 0
-
-try {
-
-[array]$uninstallKeys = Get-ChildItem `
-    -Path @($machineKey, $machineKey32on64) `
-    -ErrorAction SilentlyContinue |
-        ForEach-Object { Get-ItemProperty $_.PSPath }
-
-$foundUninstaller = $false
-foreach ($key in $uninstallKeys) {
-    if ($key.DisplayName -eq $softwareName) {
-        $foundUninstaller = $true
-        # Get the uninstall command. Some uninstallers do not include
-        # 'QuietUninstallString' and require a flag to run silently.
-        $uninstallCommand = if ($key.QuietUninstallString) {
-            $key.QuietUninstallString
-        } else {
-            $key.UninstallString
-        }
-
-        # The uninstall command may contain command and args, like:
-        # "C:\Program Files\Software\uninstall.exe" /SILENT
-        # Split the command and args
-        $splitArgs = $uninstallCommand.Split('"')
-        if ($splitArgs.Length -gt 1) {
-            if ($splitArgs.Length -eq 3) {
-                $uninstallArgs = "$( $splitArgs[2] ) $uninstallArgs".Trim()
-            } elseif ($splitArgs.Length -gt 3) {
-                Throw `
-                    "Uninstall command contains multiple quoted strings. " +
-                        "Please update the uninstall script.`n" +
-                        "Uninstall command: $uninstallCommand"
-            }
-            $uninstallCommand = $splitArgs[1]
-        }
-        Write-Host "Uninstall command: $uninstallCommand"
-        Write-Host "Uninstall args: $uninstallArgs"
-
-        $processOptions = @{
-            FilePath = $uninstallCommand
-            PassThru = $true
-            Wait = $true
-        }
-        if ($uninstallArgs -ne '') {
-            $processOptions.ArgumentList = "$uninstallArgs"
-        }
-
-        # Start process and track exit code
-        $process = Start-Process @processOptions
-        $exitCode = $process.ExitCode
-
-        # Prints the exit code
-        Write-Host "Uninstall exit code: $exitCode"
-        # Exit the loop once the software is found and uninstalled.
-        break
+# AnyBurn ships an NSIS uninstaller. "uninstall.exe /S" with Start-Process -Wait
+# hung until the validator's 10-minute timeout: -Wait also waits on descendants,
+# and without the NSIS "_?=" flag the uninstaller relaunches itself from %TEMP%.
+# So run it in place, wait on that process only, and finish the job ourselves —
+# "_?=" leaves the uninstaller and its directory behind even on success.
+
+$displayName = "AnyBurn"
+$processName = "anyburn"
+$timeoutSeconds = 120
+
+$paths = @(
+  'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall',
+  'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall',
+  'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
+)
+
+# Exact DisplayName match so "AnyBurn Pro" is left alone.
+function Find-UninstallEntry {
+  foreach ($p in $paths) {
+    $items = Get-ItemProperty "$p\*" -ErrorAction SilentlyContinue | Where-Object {
+      $_.DisplayName -eq $displayName
     }
+    if ($items) { return $items | Select-Object -First 1 }
+  }
+  return $null
 }
 
-if (-not $foundUninstaller) {
-    Write-Host "Uninstaller for '$softwareName' not found."
-    # Change exit code to 0 if you don't want to fail if uninstaller is not
-    # found. This could happen if program was already uninstalled.
-    $exitCode = 1
+function Remove-InstallDir {
+  param([string]$dir)
+  if (-not $dir) { return }
+  $resolved = $null
+  try { $resolved = (Resolve-Path -LiteralPath $dir -ErrorAction Stop).Path } catch { return }
+  # Never recurse a drive root or a two-segment path like C:\Windows.
+  if (($resolved -match '^[A-Za-z]:\\') -and ((($resolved.TrimEnd('\')) -split '\\').Count -ge 3)) {
+    Remove-Item -LiteralPath $resolved -Recurse -Force -ErrorAction SilentlyContinue
+  }
 }
 
-} catch {
-    Write-Host "Error: $_"
-    $exitCode = 1
+$entry = Find-UninstallEntry
+if (-not $entry -or -not $entry.UninstallString) {
+  Write-Host "Uninstall entry for '$displayName' not found; nothing to do."
+  Exit 0
 }
 
-Exit $exitCode
+try {
+  $uninstallString = $entry.UninstallString
+  if ($uninstallString -match '^"([^"]+)"') {
+    $uninstallExe = $matches[1]
+  } elseif ($uninstallString -match '^(.+?\.exe)') {
+    $uninstallExe = $matches[1]
+  } else {
+    $uninstallExe = $uninstallString
+  }
+
+  $installDir = $entry.InstallLocation
+  if (-not $installDir -or -not (Test-Path -LiteralPath $installDir)) {
+    $installDir = Split-Path -Parent $uninstallExe
+  }
+  # A quoted argument ending in "\" would escape its own closing quote.
+  if ($installDir) { $installDir = $installDir.TrimEnd('\') }
+
+  Stop-Process -Name $processName -Force -ErrorAction SilentlyContinue
+
+  $uninstallArgs = @("/S", "_?=$installDir")
+  Write-Host "Uninstall command: $uninstallExe"
+  Write-Host "Uninstall args: $uninstallArgs"
+
+  $process = Start-Process -FilePath $uninstallExe -ArgumentList $uninstallArgs `
+    -PassThru -NoNewWindow
+  # Touch the handle so ExitCode is still readable after the process exits.
+  try { $null = $process.Handle } catch { }
+  if ($process.WaitForExit($timeoutSeconds * 1000)) {
+    Write-Host "Uninstall exit code: $($process.ExitCode)"
+  } else {
+    Write-Host "Uninstaller did not exit within $timeoutSeconds seconds; terminating it."
+    & taskkill.exe /PID $process.Id /T /F 2>&1 | Write-Host
+  }
+
+  Stop-Process -Name "Au_" -Force -ErrorAction SilentlyContinue
+
+  # Don't trust the uninstaller's outcome; check what is actually left.
+  $remaining = Find-UninstallEntry
+  if ($remaining) {
+    Write-Host "'$displayName' is still registered; removing it manually."
+    Remove-Item -LiteralPath $remaining.PSPath -Recurse -Force -ErrorAction SilentlyContinue
+  }
+
+  $shortcuts = @(
+    "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\$displayName",
+    "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\$displayName",
+    "$env:PUBLIC\Desktop\$displayName.lnk",
+    "$env:USERPROFILE\Desktop\$displayName.lnk"
+  )
+  foreach ($shortcut in $shortcuts) {
+    Remove-Item -LiteralPath $shortcut -Recurse -Force -ErrorAction SilentlyContinue
+  }
+
+  Remove-InstallDir $installDir
+
+  if (Find-UninstallEntry) {
+    Write-Host "'$displayName' is still present after removal attempts."
+    Exit 1
+  }
+
+  Write-Host "'$displayName' is no longer present."
+  Exit 0
+} catch {
+  Write-Host "Error running uninstaller: $_"
+  Exit 1
+}

ee/maintained-apps/outputs/betterdisplay/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 5a2c4908 -> 8bc96e39 ===

--- /tmp/old.TbN74g	2026-07-29 15:13:05.932552952 +0000
+++ /tmp/new.aTHMfD	2026-07-29 15:13:05.933552946 +0000
@@ -94,7 +94,6 @@
 
 quit_application 'pro.betterdisplay.BetterDisplay'
 sudo rm -rf "$APPDIR/BetterDisplay.app"
-sudo rm -rf 'betterdisplaycli'
 trash $LOGGED_IN_USER '~/Library/Application Support/BetterDisplay'
 trash $LOGGED_IN_USER '~/Library/Application Support/BetterDummy'
 trash $LOGGED_IN_USER '~/Library/Caches/pro.betterdisplay.BetterDisplay'

ee/maintained-apps/outputs/blender/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 46f9b939 -> 2def9e18 ===

--- /tmp/old.PtAOF4	2026-07-29 15:13:05.986552663 +0000
+++ /tmp/new.3j9Shm	2026-07-29 15:13:05.986552663 +0000
@@ -53,6 +53,5 @@
 }
 
 sudo rm -rf "$APPDIR/Blender.app"
-sudo rm -rf 'blender'
 trash $LOGGED_IN_USER '~/Library/Application Support/Blender'
 trash $LOGGED_IN_USER '~/Library/Saved Application State/org.blenderfoundation.blender.savedState'

ee/maintained-apps/outputs/chatgpt/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/chatwise/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/clion/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 51845cc5 -> 9c00be7f ===

--- /tmp/old.RAXUvm	2026-07-29 15:13:06.097552068 +0000
+++ /tmp/new.1qrV22	2026-07-29 15:13:06.097552068 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/CLion.app"
-sudo rm -rf 'clion'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/CLion2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/CLion2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/CLion2026.2'

ee/maintained-apps/outputs/datagrip/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 1c2e1bad -> ae9af028 ===

--- /tmp/old.Naz7VI	2026-07-29 15:13:06.143551821 +0000
+++ /tmp/new.7EssZ0	2026-07-29 15:13:06.143551821 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/DataGrip.app"
-sudo rm -rf 'datagrip'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/DataGrip*'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/DataGrip*'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/DataGrip*'

ee/maintained-apps/outputs/dataspell/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 5a54b3d9 -> ad6f369b ===

--- /tmp/old.sCTRug	2026-07-29 15:13:06.208551473 +0000
+++ /tmp/new.MCujj9	2026-07-29 15:13:06.208551473 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/DataSpell.app"
-sudo rm -rf 'dataspell'
 trash $LOGGED_IN_USER '~/Library/Application Support/DataSpell*'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/DataSpell*'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/DataSpell*'

ee/maintained-apps/outputs/drawio/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 19c87f7a -> a088fe93 ===

--- /tmp/old.l0AGxa	2026-07-29 15:13:06.254551227 +0000
+++ /tmp/new.wbhY9R	2026-07-29 15:13:06.255551221 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/draw.io.app"
-sudo rm -rf 'drawio'
 trash $LOGGED_IN_USER '~/Library/Application Support/draw.io'
 trash $LOGGED_IN_USER '~/Library/Caches/com.jgraph.drawio.desktop'
 trash $LOGGED_IN_USER '~/Library/Caches/com.jgraph.drawio.desktop.ShipIt'

ee/maintained-apps/outputs/elgato-camera-hub/darwin.json

=== Install // a546f0ff -> 7e0ff465 ===

--- /tmp/old.DOYfw7	2026-07-29 15:13:06.308550937 +0000
+++ /tmp/new.nVjIAd	2026-07-29 15:13:06.308550937 +0000
@@ -96,5 +96,5 @@
 
 # install pkg files
 quit_and_track_application 'com.elgato.CameraHub'
-sudo installer -pkg "$TMPDIR/CameraHub_2.3.0.7229.pkg" -target /
+sudo installer -pkg "$TMPDIR/CameraHub_2.3.0.7275.pkg" -target /
 relaunch_application 'com.elgato.CameraHub'

=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/firefox/darwin.json

=== Install Script (no changes) ===
=== Uninstall // b85c0267 -> 94fa5a3b ===

--- /tmp/old.IZJWG1	2026-07-29 15:13:06.355550685 +0000
+++ /tmp/new.DlRinp	2026-07-29 15:13:06.355550685 +0000
@@ -94,7 +94,6 @@
 
 quit_application 'org.mozilla.firefox'
 sudo rm -rf "$APPDIR/Firefox.app"
-sudo rm -rf 'firefox'
 sudo rmdir '~/Library/Application Support/Mozilla'
 sudo rmdir '~/Library/Caches/Mozilla'
 sudo rmdir '~/Library/Caches/Mozilla/updates'

ee/maintained-apps/outputs/firefox@nightly/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/gimp/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 0fe4b61b -> 2439dd3b ===

--- /tmp/old.MGQpwA	2026-07-29 15:13:06.469550075 +0000
+++ /tmp/new.9OBvkq	2026-07-29 15:13:06.470550069 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/GIMP.app"
-sudo rm -rf 'gimp'
 trash $LOGGED_IN_USER '~/Library/Application Support/Gimp'
 trash $LOGGED_IN_USER '~/Library/Preferences/org.gimp.gimp-3.2.plist'
 trash $LOGGED_IN_USER '~/Library/Saved Application State/org.gimp.gimp-3.2.savedState'

ee/maintained-apps/outputs/goland/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 20571185 -> beccbf96 ===

--- /tmp/old.tP3fOa	2026-07-29 15:13:06.518549812 +0000
+++ /tmp/new.bcOq1V	2026-07-29 15:13:06.518549812 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/GoLand.app"
-sudo rm -rf 'goland'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/GoLand'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/GoLand2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/GoLand2026.2'

ee/maintained-apps/outputs/inkscape/darwin.json

=== Install Script (no changes) ===
=== Uninstall // d16b3796 -> 7879206c ===

--- /tmp/old.VwTSys	2026-07-29 15:13:06.589549432 +0000
+++ /tmp/new.qcByhr	2026-07-29 15:13:06.589549432 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/Inkscape.app"
-sudo rm -rf 'inkscape'
 trash $LOGGED_IN_USER '~/.config/inkscape'
 trash $LOGGED_IN_USER '~/Library/Application Support/Inkscape'
 trash $LOGGED_IN_USER '~/Library/Application Support/org.inkscape.Inkscape'

ee/maintained-apps/outputs/intellij-idea-ce/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 840f39ef -> 5a817315 ===

--- /tmp/old.gHfvUb	2026-07-29 15:13:06.660549051 +0000
+++ /tmp/new.4SaS5z	2026-07-29 15:13:06.660549051 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/IntelliJ IDEA CE.app"
-sudo rm -rf 'idea-ce'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/IdeaIC2025.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/IdeaIC2025.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/IdeaIC2025.2'

ee/maintained-apps/outputs/intellij-idea/darwin.json

=== Install Script (no changes) ===
=== Uninstall // acfd723a -> 2a100e79 ===

--- /tmp/old.YwlXms	2026-07-29 15:13:06.707548800 +0000
+++ /tmp/new.e8jeSy	2026-07-29 15:13:06.708548794 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/IntelliJ IDEA.app"
-sudo rm -rf 'idea'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/IntelliJIdea2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/IntelliJIdea2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/IntelliJIdea2026.2'

ee/maintained-apps/outputs/keka/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 4e1f0a29 -> 4b5f9669 ===

--- /tmp/old.xmzRik	2026-07-29 15:13:06.765548489 +0000
+++ /tmp/new.ITPs32	2026-07-29 15:13:06.766548483 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/Keka.app"
-sudo rm -rf 'keka'
 trash $LOGGED_IN_USER '~/Library/Application Scripts/*.group.com.aone.keka'
 trash $LOGGED_IN_USER '~/Library/Application Scripts/com.aone.keka'
 trash $LOGGED_IN_USER '~/Library/Application Scripts/com.aone.keka.KekaFinderIntegration'

ee/maintained-apps/outputs/kitty/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 610c592a -> 6b9c4431 ===

--- /tmp/old.Jq0cmy	2026-07-29 15:13:06.813548231 +0000
+++ /tmp/new.1Y7ATh	2026-07-29 15:13:06.813548231 +0000
@@ -53,8 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/kitty.app"
-sudo rm -rf 'kitty'
-sudo rm -rf 'kitten'
 trash $LOGGED_IN_USER '~/.config/kitty'
 trash $LOGGED_IN_USER '~/Library/Caches/kitty'
 trash $LOGGED_IN_USER '~/Library/Preferences/kitty'

ee/maintained-apps/outputs/libreoffice/darwin.json

=== Install Script (no changes) ===
=== Uninstall // f1fecf0c -> 8faa5ae7 ===

--- /tmp/old.ANRM0L	2026-07-29 15:13:06.861547974 +0000
+++ /tmp/new.4t9YVt	2026-07-29 15:13:06.861547974 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/LibreOffice.app"
-sudo rm -rf 'soffice'
 trash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.libreoffice.script.sfl*'
 trash $LOGGED_IN_USER '~/Library/Application Support/LibreOffice'
 trash $LOGGED_IN_USER '~/Library/Preferences/org.libreoffice.script.plist'

ee/maintained-apps/outputs/macpacker/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/musescore/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 608c93fa -> f39a3d70 ===

--- /tmp/old.VBHW6z	2026-07-29 15:13:06.954547476 +0000
+++ /tmp/new.mBLEj2	2026-07-29 15:13:06.954547476 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/MuseScore 4.app"
-sudo rm -rf 'mscore'
 trash $LOGGED_IN_USER '~/Library/Application Support/MuseScore'
 trash $LOGGED_IN_USER '~/Library/Caches/MuseScore'
 trash $LOGGED_IN_USER '~/Library/Caches/org.musescore.MuseScore'

ee/maintained-apps/outputs/nudge/darwin.json

=== Install Script (no changes) ===
=== Uninstall // c8a788e1 -> 1f8d2677 ===

--- /tmp/old.jbMorV	2026-07-29 15:13:07.030547069 +0000
+++ /tmp/new.aT8xhB	2026-07-29 15:13:07.030547069 +0000
@@ -120,5 +120,4 @@
 
 remove_pkg_files 'com.github.macadmins.Nudge'
 forget_pkg 'com.github.macadmins.Nudge'
-sudo rm -rf 'nudge'
 trash $LOGGED_IN_USER '~/Library/Preferences/com.github.macadmins.Nudge.plist'

ee/maintained-apps/outputs/obs/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 54899728 -> cc3469d9 ===

--- /tmp/old.FWwdsf	2026-07-29 15:13:07.076546822 +0000
+++ /tmp/new.BfninR	2026-07-29 15:13:07.076546822 +0000
@@ -54,7 +54,6 @@
 
 sudo rm -rf '/Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin'
 sudo rm -rf "$APPDIR/OBS.app"
-sudo rm -rf 'obs'
 trash $LOGGED_IN_USER '~/Library/Application Support/obs-studio'
 trash $LOGGED_IN_USER '~/Library/HTTPStorages/com.obsproject.obs-studio'
 trash $LOGGED_IN_USER '~/Library/Preferences/com.obsproject.obs-studio.plist'

ee/maintained-apps/outputs/phpstorm/darwin.json

=== Install Script (no changes) ===
=== Uninstall // f215b72e -> d37d13f0 ===

--- /tmp/old.KUlO69	2026-07-29 15:13:07.123546570 +0000
+++ /tmp/new.3fmy9N	2026-07-29 15:13:07.123546570 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/PhpStorm.app"
-sudo rm -rf 'phpstorm'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/consentOptions'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/PhpStorm2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/PhpStorm2026.2'

ee/maintained-apps/outputs/protonvpn/windows.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/pycharm-ce/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 6c73a201 -> 4b8156ff ===

--- /tmp/old.qkyYkX	2026-07-29 15:13:07.238545954 +0000
+++ /tmp/new.I7cjXc	2026-07-29 15:13:07.238545954 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/PyCharm CE.app"
-sudo rm -rf 'pycharm-ce'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/PyCharmCE2025.2'
 trash $LOGGED_IN_USER '~/Library/Application Support/PyCharm2025.2'
 trash $LOGGED_IN_USER '~/Library/Caches/com.apple.python/Applications/PyCharm CE.app'

ee/maintained-apps/outputs/pycharm/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 10f65fea -> 617acdb0 ===

--- /tmp/old.jMM0gg	2026-07-29 15:13:07.284545708 +0000
+++ /tmp/new.zMWjF7	2026-07-29 15:13:07.284545708 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/PyCharm.app"
-sudo rm -rf 'pycharm'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/PyCharm2026.2'
 trash $LOGGED_IN_USER '~/Library/Application Support/PyCharm2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/PyCharm2026.2'

ee/maintained-apps/outputs/rider/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 22db20ac -> 51f5bcc6 ===

--- /tmp/old.YmbeNv	2026-07-29 15:13:07.332545451 +0000
+++ /tmp/new.7t1qWE	2026-07-29 15:13:07.332545451 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/Rider.app"
-sudo rm -rf 'rider'
 trash $LOGGED_IN_USER '~/Library/Application Support/Rider2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/Rider2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/Rider2026.2'

ee/maintained-apps/outputs/rubymine/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 02966e3f -> 060b0265 ===

--- /tmp/old.ydPRxq	2026-07-29 15:13:07.382545183 +0000
+++ /tmp/new.8HRQ4l	2026-07-29 15:13:07.382545183 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/RubyMine.app"
-sudo rm -rf 'rubymine'
 trash $LOGGED_IN_USER '~/Library/Application Support/RubyMine2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/RubyMine2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/RubyMine2026.2'

ee/maintained-apps/outputs/rustrover/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 42cbf565 -> ae06496f ===

--- /tmp/old.FdpmF2	2026-07-29 15:13:07.443544856 +0000
+++ /tmp/new.i7hm6d	2026-07-29 15:13:07.444544851 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/RustRover.app"
-sudo rm -rf 'rustrover'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/RustRover2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/RustRover2026.2'
 trash $LOGGED_IN_USER '~/Library/Logs/JetBrains/RustRover2026.2'

ee/maintained-apps/outputs/spyder/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/typinator/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/visual-studio-code/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/vlc/darwin.json

=== Install Script (no changes) ===
=== Uninstall // c823c001 -> 8db8e61f ===

--- /tmp/old.0R8KXk	2026-07-29 15:13:07.666543661 +0000
+++ /tmp/new.POpEWW	2026-07-29 15:13:07.666543661 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/VLC.app"
-sudo rm -rf 'vlc'
 trash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/org.videolan.vlc.sfl*'
 trash $LOGGED_IN_USER '~/Library/Application Support/org.videolan.vlc'
 trash $LOGGED_IN_USER '~/Library/Application Support/VLC'

ee/maintained-apps/outputs/webstorm/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 6d11a5af -> 6c5cf19b ===

--- /tmp/old.aZidtf	2026-07-29 15:13:07.714543404 +0000
+++ /tmp/new.o7aQYY	2026-07-29 15:13:07.714543404 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/WebStorm.app"
-sudo rm -rf 'webstorm'
 trash $LOGGED_IN_USER '~/Library/Application Support/JetBrains/WebStorm2026.2'
 trash $LOGGED_IN_USER '~/Library/Caches/com.apple.nsurlsessiond/Downloads/com.jetbrains.WebStorm'
 trash $LOGGED_IN_USER '~/Library/Caches/JetBrains/WebStorm2026.2'

ee/maintained-apps/outputs/wispr-flow/darwin.json

=== Install Script (no changes) ===
=== Uninstall Script (no changes) ===

ee/maintained-apps/outputs/xld/darwin.json

=== Install Script (no changes) ===
=== Uninstall // 898594dd -> 795ac485 ===

--- /tmp/old.elV1wP	2026-07-29 15:13:07.825542809 +0000
+++ /tmp/new.9MuWyy	2026-07-29 15:13:07.825542809 +0000
@@ -53,7 +53,6 @@
 }
 
 sudo rm -rf "$APPDIR/XLD.app"
-sudo rm -rf 'xld'
 trash $LOGGED_IN_USER '~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/jp.tmkk.xld.sfl*'
 trash $LOGGED_IN_USER '~/Library/Application Support/XLD'
 trash $LOGGED_IN_USER '~/Library/Caches/jp.tmkk.XLD'

@allenhouchins
allenhouchins merged commit ddf3e96 into main Jul 29, 2026
18 checks passed
@allenhouchins
allenhouchins deleted the fma-2607291435 branch July 29, 2026 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants