Skip to content

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.