Suggestions for update tools for your Windows/Mac apps?

My app updating for customers is clunky – I distribute a new installer for them on Windows, and a new DMG for customers on Mac. I would like to make an updater that is more seamless, for example, from within the app when it detects an update is available, gracefully closes and updates it with a new captive runtime. How are you providing updates for your Windows and Mac apps?


it depends on how you distribute the app and how far you want to go to provide something seamless

this, for example, only works if your user actually launch the app from time to time
if the user “forgot” about the app, it is then never updated

I would advise the following, but remove/add depending on how far you want to go

update mechanism:

  • have a host where you can get a file (JSON, XML, whatever …) that can provide the latest version related to the platform (Windows, macOS, etc.)
  • provide a background service
    it keeps running in the background even if the app is not launched
    check the remote file latest version vs the current installed app version every N times
    (something reasonable like once a week)
    • either launch a popup from the background service to update
    • or launch your app with an “-update” parameter
    • in both case make it easy for the user to cancel/ignore

if the background service is “too much”, do the same when the user launch the app
but then you’re depending on if/when the user launch the app

think of extreme cases where a user have a v1.0 installed and 2 years later it needs to update to v3.0, etc.

for the installer/updaters

In general, it is about learning the system tools available on the OS to launch the app, shutdown the app, detect the version of the app, etc.

i am using exactly what you need to update my Apps.

  1. on an Server i put an XML file, where I have all the Update - Infos stored,
    there i save Version number and also the things that have changed
XML File

<?xml version="1.0" encoding="utf-8"?> <start> <update version="2.8.12"> <description><![CDATA[ Version 2.8.15 • Whats New Description, what has changed ]]></description> </update> </start>

  1. in the Programm at the start i am Reading this XML and comparing Versions
    When there is a new Version i open a dialog that shows the Changes and the Version
    Here i check if i have MAC or Windows and the I have a download Button.
    I start downloading and i am quitting the app after 5 Seconds so after download you can install