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
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.
# There is no "self-update" CLI subcommand. The CLI is intentionally # scriptable and deterministic — auto-replacing its own binary mid-run # would be a footgun. To upgrade a CLI-only deployment: # 1. Stop the agent (and the background service if installed). backupengine service stop # if you installed the service # Then quit any GUI processes. # 2. Download the latest archive for your platform from # https://downloads.backupengine.com/ (linked from latest-version.json) # 3. Replace the install directory with the contents of the new ZIP / # tarball / pkg, preserving %APPDATA%\Backup Engine\ (Windows) or # ~/.config/backup-engine/ (Linux/macOS) — that's your data and config. # 4. Relaunch. backupengine version # confirm the new version is active backupengine service start # if you stopped the service
ℹ Note
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.
%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
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.