Back to Wekan

Dev: Windows install & update platforms (manual vs automatic, like Snap)

docs/Design/Autoupdate/OS/Windows.md

10.0315.7 KB
Original Source

Dev: Windows install & update platforms (manual vs automatic, like Snap)

A developer reference of every platform that can install and update a Windows application, split by whether updates are manual (the user re-downloads and re-runs an installer) or automatic (background / self-updating, the way a Linux Snap auto-refreshes). WeKan's desktop app is Electron, and WeKan server can also run on Windows, so both desktop-app and enterprise-deployment mechanisms are covered.

Windows has no single first-party equivalent of Snap's transactional, store-driven, delta auto-refresh. The closest built-in options are the Microsoft Store (MSIX) and App Installer (.appinstaller); everything else is either manual, an app-embedded updater (Electron/Squirrel/Omaha/Sparkle), or an enterprise fleet manager (Intune/SCCM/WSUS/PDQ).


a) Manual update platforms

The user (or an admin) explicitly fetches and applies each new version. No background refresh.

Installer formats (the update is "download the new one and run it")

PlatformWhat it isMaintainerFormatURLLicense
MSI / Windows InstallerThe classic transactional installer/patching engine. Updates via a new MSI, an .msp patch, or major-upgrade. No self-update; an admin or GPO redeploys.Microsoft.msi, .msphttps://learn.microsoft.com/en-us/windows/win32/msi/windows-installer-portalProprietary (OS component)
EXE / NSISScriptable installer that produces a self-contained .exe. No built-in updater — needs an external one (see electron-updater / WinSparkle).Open source (NSIS project).exehttps://nsis.sourceforge.io/zlib/LGPL (OSS)
EXE / Inno SetupPopular scriptable .exe installer. Same as NSIS: no self-update on its own.Jordan Russell (OSS).exehttps://jrsoftware.org/isinfo.phpFree (OSS)
Portable / ZIPUnzip-and-run, no installer. "Update" = replace the folder.app author.zip, portable .exevaries

Package managers whose default mode is manual

PlatformUpdate command (manual)MaintainerFormat handledURLLicense
winget (Windows Package Manager)winget upgrade / winget upgrade --allno built-in scheduler; nothing runs on its own.Microsoft.msi, .exe, .msix, portable, Storehttps://github.com/microsoft/winget-cliMIT (OSS)
Chocolatey (CLI)choco upgrade all — manual unless scheduled (see auto section).Chocolatey Software / community.msi, .exe, .zip (nupkg wrappers)https://chocolatey.org/Apache-2.0 core (OSS); paid tiers
Scoopscoop update * — manual only, no background service by design.ScoopInstaller (OSS)portable .zip, .exehttps://scoop.sh/ · repo https://github.com/ScoopInstaller/ScoopMIT (OSS)
npm global (npm i -g)npm update -gCLI tools only, not GUI apps. No auto-update.npm / GitHubnpm tarballhttps://docs.npmjs.com/MIT (OSS)
Ninite (free web installer)Re-run the generated .exe to update the whole curated selection. Fixed catalog — not a self-distribution channel.Secure by Designwraps vendor .exe/.msihttps://ninite.com/Free (personal)

Note (winget): winget itself is delivered as part of App Installer via the Microsoft Store, so the tool updates automatically — but the apps it manages do not unless you add a scheduled task or a helper (see WAU below).


b) Automatic update platforms (like Snap)

These refresh in the background, on launch, on a schedule, or store-managed — without the user re-running an installer.

Store / OS-managed (closest to Snap)

PlatformAuto-update mechanismMaintainerFormatURLLicense
Microsoft StoreStore client silently downloads & installs new versions in the background (delta updates). The nearest Windows analogue to Snap's store-driven auto-refresh.MicrosoftMSIX / AppXhttps://apps.microsoft.com/Proprietary
MSIX + App Installer (.appinstaller)An .appinstaller XML manifest with an <UpdateSettings> block: OnLaunch + HoursBetweenUpdateChecks, or automatic background checks. Lets you self-host MSIX auto-update without the Store.MicrosoftMSIX / .appinstallerhttps://learn.microsoft.com/en-us/windows/msix/app-installer/app-installer-file-overviewProprietary (OS component)
ClickOnce.application manifest; the app checks its deployment URL and updates on launch (before or after start, configurable). Old but still supported; primarily .NET — not usable for Electron.Microsoft.applicationhttps://learn.microsoft.com/en-us/visualstudio/deployment/clickonce-security-and-deploymentProprietary
SteamAlways-running background client auto-updates installed titles (has a "Software" category). Offloads the whole update stack to Valve, but a closed store with revenue share.Valveany desktop apphttps://store.steampowered.com/Proprietary
Setapp / Stardock ODMSubscription "app store" clients with an auto-updating agent. Setapp is macOS/iOS only — there is no general Windows equivalent; Stardock ODM only auto-updates Stardock's own utilities.MacPaw / Stardockclient-managedhttps://setapp.com/ · https://www.stardock.com/Proprietary

⚠️ MSIX web-install caveat: the ms-appinstaller: protocol handler (one-click "Install" from a web page) was disabled by default by Microsoft in Dec 2023 (App Installer 1.21.3421.0) after malware abuse — .msix/.appinstaller files now must be downloaded to disk first so endpoint AV can scan them. The .appinstaller auto-update-after-install mechanism still works; only the browser one-click protocol was turned off. See https://learn.microsoft.com/en-us/windows/msix/app-installer/ and https://www.microsoft.com/en-us/msrc/blog/2023/12/microsoft-addresses-app-installer-abuse

App-embedded self-updaters (best fit for an Electron app like WeKan desktop)

PlatformAuto-update mechanismMaintainerFormatURLLicense
Squirrel.WindowsThe updater behind Electron's built-in autoUpdater on Windows. App pings a feed on launch, downloads deltas, swaps on restart.OSS (Squirrel project).nupkg + Setup.exehttps://github.com/Squirrel/Squirrel.WindowsMIT (OSS)
Electron autoUpdater (built-in)Built on Squirrel (Win) / Squirrel.Mac (Mac). Needs an update server/feed.OpenJS / ElectronSquirrel feedhttps://www.electronjs.org/docs/latest/api/auto-updaterMIT (OSS)
electron-updater (electron-builder)The most common Electron auto-updater. NSIS-based; pulls from a feed (GitHub Releases, generic HTTP, S3, etc.), downloads in background, installs on quit. Independent of Squirrel.electron-userland (OSS)NSIS .exe, .msihttps://www.electron.build/ · repo https://github.com/electron-userland/electron-builderMIT (OSS)
update.electronjs.orgFree hosted update server for open-source Electron apps published to public GitHub Releases; works with the built-in Squirrel autoUpdater.Electron projectSquirrel feedhttps://github.com/electron/update.electronjs.orgMIT (OSS)
HazelSelf-hosted lightweight update server for Electron (GitHub Releases proxy).Vercel (OSS)Squirrel feedhttps://github.com/vercel/hazelMIT (OSS)
NutsSelf-hosted update server backed by GitHub Releases, with download + changelog.GitBook (OSS)Squirrel feedhttps://github.com/GitbookIO/nutsApache-2.0 (OSS)
NucleusSelf-hosted update server for Electron (multi-app, S3/static).Atlassian (OSS)Squirrel / electron-updater feedhttps://github.com/atlassian/nucleusMIT (OSS)
WinSparkleWindows port of macOS Sparkle; appcast (RSS) based auto-update for native/non-Electron Windows apps. Checks on schedule/launch, prompts, installs.OSS.exe/.msi via appcasthttps://winsparkle.org/MIT (OSS)
Google OmahaThe open-source engine behind Google Chrome's silent auto-update: a background service that polls and installs. Heavy to operate but the gold standard for silent background refresh.Google (OSS).exe/.msi via Omaha protocolhttps://github.com/google/omahaApache-2.0 (OSS)

Maturity caveat (avoid for new work): Squirrel.Windows is stagnant (last release 2020), Nucleus/Hazel/Nuts are 2018–2021 vintage, and Google Omaha was archived (read-only) in 2025. For a new Electron app prefer electron-updater (self-hosted feed) or update.electronjs.org (GitHub Releases).

Third-party package managers in automatic mode

PlatformAuto-update mechanismMaintainerURLLicense
Chocolatey (scheduled / Central Management)A scheduled task running choco upgrade all, or Chocolatey Central Management (self-service + reporting) in the commercial tiers.Chocolatey Softwarehttps://chocolatey.org/OSS core + paid
Winget-AutoUpdate (WAU)Popular helper: installs a scheduled task running winget upgrade as SYSTEM on a Daily/Weekly/… cadence, with allow/block lists and user notifications. Turns winget into Snap-like background refresh.Romanitho (OSS)https://github.com/Romanitho/Winget-AutoUpdateGPL-3.0 (OSS)
Ninite Pro / Ninite UpdaterBackground agent that keeps a curated app catalog patched automatically across machines.Ninite (commercial)https://ninite.com/Proprietary (paid)

Enterprise fleet / MDM (admin-driven automatic deployment & patching)

PlatformAuto-update mechanismMaintainerURLLicense
Microsoft Intune (+ Enterprise App Management)Cloud MDM: assign apps (Win32 .intunewin/MSIX/Store) via the Intune Management Extension. Enterprise App Management auto-update reached GA in 2026 — a catalog app with a Required assignment auto-updates when a newer catalog version appears (no supersedence; no phased rollout / rollback yet).Microsofthttps://learn.microsoft.com/en-us/intune/app-management/deployment/enterprise-app-managementProprietary (subscription)
Microsoft Configuration Manager (SCCM/MECM)On-prem/co-managed fleet deployment. Automatic Deployment Rules (ADR) sync → build update group → deploy to collections on a schedule; third-party apps via native catalogs or Patch My PC. Can target server collections.Microsofthttps://learn.microsoft.com/en-us/mem/configmgr/Proprietary
WSUSOn-prem Windows Update server; auto-approval rules + GPO-scheduled client pull. Primarily OS/MS patches; third-party apps only via a publishing layer. Deprecated (announced Sept 2024) but still shipping in Windows Server 2025.Microsofthttps://learn.microsoft.com/en-us/windows-server/administration/windows-server-update-services/get-started/windows-server-update-services-wsusProprietary (OS role)
Windows Update for Business (now "Update Client Policies")Ring/deferral/deadline policy pushed via Intune/GPO; the OS update client pulls on schedule. Governs OS patching, not your app — context only.Microsofthttps://learn.microsoft.com/en-us/intune/intune-service/protect/windows-update-for-business-configureIncl. with Windows
PDQ Deploy / PDQ ConnectAuto-deploy and patch third-party apps on a schedule across a fleet (Deploy = on-prem/heartbeat; Connect = cloud agent).PDQ.com (commercial)https://www.pdq.com/Proprietary (paid)
Patch My PCWatches vendor releases and automatically repackages/signs/publishes updated app definitions into Intune / ConfigMgr / WSUS, which then deploy them.Patch My PC (commercial)https://patchmypc.com/Proprietary (paid)

GUI update front-ends (not distribution channels)

PlatformAuto-update mechanismMaintainerURLLicense
UniGetUI (formerly WingetUI)GUI over winget/Scoop/Chocolatey/npm/pip; polls and auto-applies or notifies, with a built-in self-updater. Your app appears automatically if it is in winget/Choco/Scoop.Devolutions (OSS)https://github.com/Devolutions/UniGetUIMIT (OSS)
PortableApps.com PlatformLauncher for portable .paf.exe apps with a built-in (user-initiated) App Updater. Electron portable builds fit well.Rare Ideas (OSS)https://portableapps.com/OSS

Comparison at a glance

PlatformManualAutomaticAuto mechanismFor Electron app?
Microsoft Store (MSIX)Store client, background✓ (needs MSIX pkg)
App Installer .appinstallermanifest OnLaunch / interval✓ (needs MSIX pkg)
ClickOnceon-launch check✗ (mainly .NET)
MSI / Windows Installervia GPO/Intuneadmin redeploywrapper only
NSIS / Inno Setup (.exe)needs external updaterpackaging only
wingetvia WAU/taskscheduled taskdistribution
Chocolateyscheduled task / CCMdistribution
Scoop(manual by design)distribution
npm globalnoneCLI tools only
Ninite (web)re-run installer✗ (fixed catalog)
Microsoft Store (MSIX) — see aboveStore client, background✓ (needs MSIX pkg)
Steambackground client✓ (closed store)
Setapp / Stardock ODMclient agent✗ (Setapp = Mac only)
Squirrel.Windowson-launch, deltas✓ built-in
electron-updaterbackground, install-on-quit✓ recommended
update.electronjs.org / Hazel / Nuts / Nucleusupdate feed server✓ (feed backends)
WinSparkleappcast (RSS)native apps
Google Omahabackground service, silentheavy, generic
Ninite Probackground agent✗ (catalog only)
Intune (+EAM) / SCCM / WSUSMDM push / ADR / schedule✓ (as Win32/MSIX)
PDQ / Patch My PCscheduled fleet patch✓ (as package)
UniGetUI / PortableAppsGUI polling front-end✓ (via backends)

What this means for WeKan

  • WeKan desktop is Electron. The two realistic Snap-like auto-update paths are:
    1. electron-updater (electron-builder) pulling from GitHub Releases — the simplest, most common choice; background download, install on quit. Feed can be self-hosted (Hazel / Nuts / Nucleus) if not using GitHub directly.
    2. MSIX + Microsoft Store (or a self-hosted .appinstaller) — the most "Snap-like" store-managed refresh, at the cost of MSIX packaging and (for the Store) certification. Remember the ms-appinstaller: one-click protocol is disabled by default, so web install means "download the file, then run it."
  • For plain distribution (no forced auto-update), winget and Chocolatey are the community-expected package managers; users update on their own, or admins schedule it (Winget-AutoUpdate / a choco upgrade all task).
  • For managed fleets, Intune / SCCM / PDQ / Patch My PC push updates centrally.
  • WeKan server on Windows is normally run via Docker or from source, not as a packaged desktop app, so its "updates" are pulling a new image / rebuilding — outside these desktop update frameworks.

See also