Update frameworks make it easy for developers to release new versions of their applications to users. This page lists the most popular update frameworks on Windows. Get a quick overview of their benefits and tradeoffs so you can pick the best one for your requirements.
The goal is clear: As a developer, you want to keep your software updated on your users' systems. But when it comes to the actual implementation, there are several things to consider. Is your application a GUI program or a Windows Service that runs in the background? Do you want to notify users of updates and let them decide when to apply them? Or do you want updates to be applied transparently in the background? How important is security to you? Do the system administrators that install your software wish to be able to "hold back" a new version until it has been tested? Should your software be updated only for the current user, or for all users on the current machine? These are all questions that will likely affect your decision as to which update framework to use.
When you ask "Which program has the best update system?", then many people will reply "Google Chrome". This is also reflected by the fact that virtually all existing update frameworks strive to implement an update system "as good as Chrome's". What's less well-known is that you can actually use Chrome's update mechanism for your own applications. This is because Google have open sourced their client implementation in a GitHub project called Omaha. If you'd like to get a quick overview of this technology, you can for instance see this Google Omaha Tutorial.
At the time of this writing, there are 1 billion Windows PCs worldwide. Chrome's browser market share on those machines is 63%. This means that Chrome, and thus Omaha, are installed on hundreds of millions of machines. Those machines range from simple end user PCs to devices in highly restricted environments, such as corporate banking systems.
Because of this widespread use, Omaha is the most powerful, stable and secure update system. It doesn't get any better, especially with Google's excellent engineers behind it. In short, Omaha is the gold standard for enterprise-grade deployment of Windows software.
As mentioned before, Omaha is open source so you can set it up yourself. However, there is a drawback to its power: It's a lot of work to get up and running. Once it's running, it is stable and hassle-free. But getting there requires some work. This is the niche our agency fills: We have years of experience working with Google Omaha across many different client projects. This allows us to implement Omaha more cost-effectively and with a higher quality than organizations who do it themselves. If you would like our help with Omaha, then please use the button below. It's free to get in touch and we normally respond within one business day.
Omaha should be a good fit if you are a startup wishing to scale, or a larger enterprise. If you are a smaller company with fewer users, then one of the alternative update frameworks below might be a better fit for you.
Squirrel is less powerful than Omaha, but easier to set up and thus more widely used. It has seen additional interest in recent years because Electron uses it. Note however that Chromium itself (which Electron is based on) still uses Omaha.
Squirrel aims to improve where ClickOnce falls short. It is a framework and a set of tools for installing and updating your application on your users' machines. Squirrel's focus is on simplicity, and it generally succeeds in that regard. It is primarily made for C# applications, but can also manage applications written in other languages.
Like Omaha, Squirrel supports multiple channels (eg. alpha/beta/stable) and delta updates. One limitation of Squirrel in comparison to Omaha is that it only runs while your application is running. It is also more optimized for per-user than for machine-wide installations. In particular, unlike Omaha, Squirrel can only update when your application runs as the user account which installed it.
A question mark about Squirrel is its future. The project was deprecated in April 2019 when the official maintainer stepped down. As of this writing, it seems to receive spurious commits from the community. However no single person has stepped up to fully take over maintenance of the project.
Besides its unclear future, Squirrel as it exists works well and is relatively easy to set up, especially for C# applications. It may be a good fit for you if security and SLAs are less important than cheap and fast solutions.
WinSparkle is a Windows port of the popular Sparkle framework for updating Mac applications. Its architecture is very similar to Squirrel in that it checks for updates while your application runs. Like its namesake, WinSparkle uses an Appcast XML file to obtain information about which versions are available. To use WinSparkle, you generate this XML file and upload it to a server. The XML contains a list of versions and download links for the installer for each version. This is similar to Squirrel, which uses a file called RELEASES.
One aspect where Squirrel and WinSparkle differ is philosophical: Squirrel offers no GUI integration and recommends that updates be automatic and completely silent. WinSparkle on the other hand puts the GUI first. When an update is available, WinSparkle shows a prompt:
Image © 2009-2020 Vaclav Slavik, used under the terms of the MIT license.
Here are a few more pros and cons of WinSparkle vs. Squirrel:
- WinSparkle does not currently support delta updates.
+ WinSparkle is still actively maintained by its original author.
- WinSparkle seems less mature and less widely used, with 850 GitHub stars vs. Squirrel's 5,300.
At the end of the day, WinSparkle and Squirrel are quite similar in terms of their capabilities and limitations. If you are deciding between the two, then a large factor in your decision will probably be whether your prefer WinSparkle's graphical approach, or Squirrel's silent one.
As its name implies, AutoUpdater.NET is for applications built with the .NET framework. It is like a combination of Squirrel and WinSparkle in that it offers both graphical and silent updates. It too uses a special XML file for listing available updates. It is more popular than WinSparkle with 1,200 GitHub stars and (at the time of this writing) actively maintained. You might choose it over WinSparkle for its larger user base and better support for .NET. (WinSparkle requires a little extra work to be used from .NET.)
Generally, of the three non-Omaha alternatives discussed above, Squirrel seems to be the most stable and technically mature. Its drawback (if you consider it that) is that it doesn't offer a graphical implementation. If you would like a GUI, you may be best served by AutoUpdater.NET if you are using .NET, and WinSparkle otherwise.
wyUpdate is a part of the commercial wyBuild packaging tool. It aims to "match the quality of the Google Chrome Updater". It is optimized for .NET applications but can also update programs written in other languages. It supports delta updates and, unlike the non-Omaha solutions described above, can also update a machine-wide installation when run as a non-admin user. (It does this by prompting for a password if necessary.) In the past, some people complained that wyUpdate is buggy and said they preferred Omaha. But there are also other people who seem to be happy using it.
wyUpdate supports silent updates for all languages and graphical updates for .NET applications. Its philosophical difference to Squirrel, WinSparkle and AutoUpdater.NET is that wyBuild gives you a graphical wizard for packaging new versions of your app. If this more high-level but less code-centric approach appeals to you and wyBuild's commercial license does not bother you, then wyUpdate might be a good solution.
We listed the five most popular automatic update frameworks for Windows and discussed their advantages and disadvantages. If you are an enterprise or a startup wishing to scale, then Omaha is the most powerful solution. Otherwise, your choice will be affected by personal preference and the language in which your main application is written. If you are using C# and want silent updates, then Squirrel might be a good fit. If you are using .NET and want graphical updates, then pick AutoUpdater.NET or the commercial wyUpdate. Finally, if you are not using .NET but still want graphical updates then WinSparkle may be your best choice.
If you are now considering Omaha and would like to learn more about how it works or how we might be able to assist you, get in touch! It's free of course and we normally get back to you within one business day.