Skip to content

updater error: Cannot update while running on a read-only volume. The application is on a read-only volume. Please move the application and try again. If you're on macOS Sierra or later, you'll need to move the application out of the Downloads directory... #21

Closed

Description

@sentry

Sentry Issue: ELECTRON-E

updater error: Cannot update while running on a read-only volume. The application is on a read-only volume. Please move the application and try again. If you're on macOS Sierra or later, you'll need to move the application out of the Downloads directory. See https://github.com/Squirrel/Squirrel.Mac/issues/182 for more information.

This issue was automatically created by Sentry via Auto-file Production crashes

Activity

  1. added
    bugSomething isn't working
    sentryAuto-created from Sentry crash report
    on Jul 25, 2026
  2. codedev-david commented on Jul 25, 2026

    @codedev-david
    Owner

    Auto-triage attempted but the candidate fix failed npx tsc. Human review needed. Log: C:\Users\DavidEngelhart\AppData\Local\termpolis\auto-triage\run-20260725-043422.log

  3. codedev-david commented on Jul 25, 2026

    @codedev-david
    Owner

    Fixed in v1.32.2.

    This isn't a bug in the app — it's the auto-updater correctly refusing to update a copy of Termpolis that's running from a read-only location (on macOS, typically still inside the mounted .dmg or in ~/Downloads under App Translocation). Squirrel raises it, the app can't do anything about it, and the user isn't affected: the app runs fine, it just can't self-update until it's moved to /Applications.

    What was wrong is that we reported it as a production error. autoUpdater.ts already treated two other environmental refusals as benign (a missing app-update.yml, transient network failures) but not this one, so every launch from a read-only volume filed an issue here.

    Fix (54ea1cd, c477566):

    • New src/main/updaterErrors.ts — a pure module (no electron import) holding the benign-updater-error predicates, including a new isReadOnlyVolumeError. The updater now resolves this state to not-available instead of error.
    • The predicates live in their own module rather than in autoUpdater.ts because sentry.ts needs them too during early main init — and because both of those files are excluded from coverage, so logic added there would go unmeasured. updaterErrors.ts is at 100% coverage.

    Note that this one refusal filed two issues — #21 (via telemetry.recordUpdaterEvent → captureMessage) and #22 (the raw Error reaching Sentry's global handler). Both paths are now closed; see #22.

    If you want auto-update to work, move Termpolis.app to /Applications and relaunch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    auto-triage-attemptedAuto-triage script has tried to fix this issuebugSomething isn't workingneeds-triageAwaiting initial reviewsentryAuto-created from Sentry crash report

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions