Backup EnginebackupEngine
Docs/Desktop Agent/Auto-Update Checker

Auto-Update Checker

How the desktop agent discovers new releases, surfaces them as a banner, and applies the upgrade in a way that fits how you installed it.

Overview

The desktop agent fetches downloads.backupengine.com/latest-version.json on launch (a few seconds after login, so it does not race the registration and heartbeat traffic) and re-checks every 6 hours while the dashboard is open. When a newer version exists, an amber banner appears at the top of every screen with the version number, release date, and four actions.

  • •What's new — opens the changelog in your default browser.
  • •Update now — runs the install-type-aware upgrade flow described below.
  • •Remind tomorrow — snoozes the banner for 24 hours; reappears the next day.
  • •Skip this version — never shows the banner again for this exact version. The next release wakes it up.

ℹ Note

Updates are always user-initiated. The agent never auto-installs anything in the background — clicking Update now is the only path that downloads or replaces files.

Apply an Available Update

  • •Open the BackupEngine desktop app.
  • •When the amber update banner appears at the top of the dashboard, review the version and date.
  • •Click What's new if you want to read the release notes first.
  • •Click Update now. The agent picks the right flow for how you installed it (see below).
  • •Follow the platform prompts: Windows App Installer for MSIX, the bundled PowerShell self-updater for ZIP, or a manual extract step on Linux/macOS.
  • •The app relaunches into the new version automatically on Windows; on Linux/macOS, run the freshly extracted binary.

ℹ Note

The CLI does not have a self-update subcommand by design. If you need fully unattended upgrades on headless servers, use your existing config-management tool (Ansible, Puppet, MDM) to ship the new archive and bounce the service.

Install-Type-Aware Upgrade Paths

The agent inspects Platform.resolvedExecutable to decide how to apply the update. Each install type has a different upgrade flow because they expect different things from the OS.

  • •Windows MSIX (Microsoft Store / sideloaded package): paths under \WindowsApps\ or matching the package family name net.techbench.backupengine_. Update now opens the ms-appinstaller: URI so the Windows App Installer handles the upgrade like any other store-packaged app.
  • •Windows ZIP (manual install): the agent downloads the new ZIP to %APPDATA%\Backup Engine\updates\, writes a small PowerShell self-updater script, launches it hidden, and exits. The script waits for the agent's PID to clear, unzips over the install directory, and relaunches the new EXE.
  • •Linux tar.gz: download lands in ~/Downloads/ with a toast that says "extract + run to finish". In-place replacement would require knowing your packaging story (tarball vs deb vs rpm vs Snap vs Flatpak), so manual extract is the safe default.
  • •macOS zip: download lands in ~/Downloads/ with the same "extract + run to finish" toast. The DMG path is reserved for a future release.

When the Checker Stays Quiet

A few guards prevent the update banner from showing up at the wrong moment. These are not configurable — they are baked in.

  • •Active backup running: while AppState.hasActiveJobs is true, no check fires. Clicking Update now during a backup surfaces a snackbar "Cannot update during backup. Will retry later." instead of silently doing nothing.
  • •CLI mode: the checker is GUI-only. backupengine commands never poll the version manifest.
  • •Service mode: the background service does not check for updates. It just runs scheduled backups.
  • •Skipped version: clicking Skip this version writes a row to update_skip and the banner stays gone until a different version ships.
  • •Snoozed: Remind tomorrow writes a row to update_snooze with a 24h timestamp. The banner reappears once the snooze expires.

Skip and Snooze Persistence

Skip and snooze decisions live in two new SQLite tables, update_skip and update_snooze, added in LocalDb v13 → v14. The skip row is keyed to the exact version string — skipping v1.10.1 does not suppress the banner when v1.10.2 releases. Snooze rows expire after 24 hours and are evaluated on every check.

On-disk state
%APPDATA%\net.techbench.backupengine\Backup Engine\db\local.sqlite
  ├─ update_skip(version TEXT PRIMARY KEY, skipped_at INTEGER)
  └─ update_snooze(version TEXT PRIMARY KEY, snoozed_until INTEGER)

Mandatory Updates (min_supported_version)

The latest-version.json manifest carries an optional min_supported_version field. Builds older than that minimum see a red (danger) banner instead of the amber one, with only two actions: What\'s new and Update now. Skip and Remind tomorrow are removed because end-of-life builds may have known security or correctness issues.

⚠ Warning

Mandatory-update banners are reserved for cases where running the older build is unsafe — for example, a security fix that affects backup confidentiality. They are not used for routine releases.

Troubleshooting

  • •Banner never appears even though a new version exists: confirm the dashboard window has been open for at least a few seconds since launch. The first check fires shortly after login, not instantly. Also verify outbound HTTPS to downloads.backupengine.com is allowed by your firewall.
  • •Banner disappeared after a single click: you probably clicked Skip this version. The banner will return when the next version after the skipped one ships.
  • •Update now click silently does nothing: a backup is in progress. Wait for it to finish and try again.
  • •Updater script error on Windows ZIP installs: confirm the install directory is writable by your user. The ZIP self-updater runs as the same user, not elevated.
  • •Linux/macOS toast says "extract + run to finish" but you want unattended upgrades: use your config-management tool to fetch and unpack the archive on your schedule. The desktop checker is intended for the GUI use case.