Publishing Updates
Create and publish the appcast feed WinSparkle uses to find updates.
WinSparkle shares its update checking mechanism with Sparkle on macOS. It reads information about available versions from an appcast: an RSS 2.0 feed with some extensions.
The following snippet shows a sample RSS 2.0 feed with an item element
representing the appcast:
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"> <channel> <title>WinSparkle Test Appcast</title> <description>Most recent updates to WinSparkle Test</description> <language>en</language> <item> <title>Version 1.5.5880</title> <sparkle:version>1.5.5880</sparkle:version> <sparkle:releaseNotesLink> https://your_domain/your_path/release_notes.html </sparkle:releaseNotesLink> <pubDate>Fri, 06 Feb 2016 22:49:00 +0100</pubDate> <enclosure url="https://your_domain/your_path/setup.exe" length="0" type="application/octet-stream" /> </item> </channel></rss>Note that, in this example, the enclosure element’s length is 0. While
WinSparkle works without the length attribute, the RSS Best Practice Profile
recommends setting length to 0 in case a publisher can’t determine the
enclosure’s size.
See Sparkle documentation for detailed information about the feed format. Not all options are currently supported by WinSparkle. See below for additional supported extensions.
Publishing the Appcast
Appcasts are accessed over HTTPS, so it’s enough to upload the XML file to your web server.
Always serve the appcast, release notes, and downloads over HTTPS. WinSparkle can read HTTP URLs, but plain HTTP lets intermediaries hide, replace, or misrepresent updates.
WinSparkle Specifics and Extensions
Specifying minimum OS version
The minimum required Windows version can be set by providing
<sparkle:minimumSystemVersion>, same as on Mac. The value is interpreted as a
tuple of 1-3 numbers, major[.minor[.build]]. Components except major are
optional and default to 0. Standard Windows versioning is used, for example
10.0 for Windows 10, 6.2 for Windows 8, 10.0.22000 for Windows 11, and
so on. See
this helpful list by Inno Setup.
Backwards compatibility note
Support for build numbers was added in WinSparkle 0.8.3. Previous versions interpreted the third component as a service pack number. This is still supported, but not recommended. If you have active installs using WinSparkle 0.8.1 or older, you must either limit yourself to only major.minor or major.minor.servicepack syntax, or use the alternative syntax major.minor-build, which will be recognized by newer versions of WinSparkle, while older versions will only parse the major.minor part.
Platform-specific Updates
Sparkle’s feed format allows specifying the update’s platform with the
sparkle:os attribute, which makes it possible to have, for example, files for
both macOS and Windows in a single appcast. WinSparkle adopts and respects
sparkle:os. The attribute can have one of the following values:
| Value | Meaning |
|---|---|
windows |
Any Windows download. |
windows-x86 |
32-bit Windows download. |
windows-x64 |
64-bit Windows download. Notice that this will only be used by 64-bit WinSparkle.dll; it does not check the OS bitness. In other words, 32-bit WinSparkle.dll will not use this item even if running on 64-bit Windows in WoW64 mode. |
windows-arm64 |
ARM64 Windows download. The same note as for windows-x64 applies. |
macos |
Any macOS download. This requires Sparkle 1.18.1 or later. |
Installer Arguments
On Windows, the enclosure is typically some kind of installer: an MSI, Inno
Setup installer, NSIS installer, and so on. It is often useful to pass
additional arguments to the installer when launching it, for example to force
non-interactive installation with reduced UI. Notice that the installer
shouldn’t be completely invisible, because neither WinSparkle nor the hosting
application is showing any UI at the time. The
sparkle:installerArguments extension attribute can be used for this purpose.
Useful values for common installers are listed below:
| Installer | sparkle:installerArguments |
Notes |
|---|---|---|
| Inno Setup | /SILENT /SP- /NOICONS |
Shows only progress and errors, no startup prompt (docs, docs). |
| MSI | /passive |
Unattended mode, shows progress bar only. |
| NSIS | /S |
Silent mode. No standard prompts or pages are shown. |