Skip to content

Detect Squirrel / Electron auto-updater apps (%LocalAppData%\<Vendor>\<App>\Update.exe --uninstall) #949

Description

@chirag127

Summary

A large class of modern Windows apps installs into %LocalAppData% (per-user, no admin) via the Squirrel installer or an Electron auto-updater. Examples: Slack (older builds), Discord, GitHub Desktop, Atom-heritage tools, several Electron apps, and Microsoft Teams classic.

Uninstall for these is not a normal MSI or NSIS invocation — it is:

%LocalAppData%\<Vendor>\<App>\Update.exe --uninstall -s

BCU sees these in HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\<key> with a QuietUninstallString pointing at Update.exe, but:

  1. The UninstallerKind classification is not "Squirrel" — it falls through to a generic bucket.
  2. Junk detection does not look under %LocalAppData%\<Vendor>\<App>\packages\<version> and %LocalAppData%\<Vendor>\<App>\SquirrelSetup.log, both of which routinely survive.
  3. %LocalAppData%\<Vendor>\<App>\Update.exe and any shortcut in %AppData%\Microsoft\Windows\Start Menu\Programs\<Vendor> also survive.

Proposal

  • Add a Squirrel value to UninstallerKind (analogous to Msiexec, Nsis, InnoSetup, Scoop, …) so users can filter for these separately.
  • Detection heuristic: QuietUninstallString matches %LocalAppData%\**\Update.exe --uninstall*, OR the install location contains \packages�pp-<semver>\ alongside a top-level Update.exe and SquirrelSetup.log.
  • Junk scan: when an app is classified Squirrel, add its full %LocalAppData%\<Vendor>\<App>\ directory as a high-confidence leftover candidate after uninstall completes.

Related

No prior issue mentions Squirrel by name.

Version

BCU v6.2.0.0 on Windows 11. Verified with Discord + GitHub Desktop installed via their normal installers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions