App update framework for Windows, inspired by Sparkle for OS X
C++ CMake C Pascal Batchfile
Clone or download
vslavik Enable HTTP/2 where supported
WinInet is capable of using HTTP/2 on Windows 10, version 1507 or
later, but it needs to be explicitly enabled. Do it and also define the
necessary constants ourselves if they are missing so that compilation
with an older SDK is full-featured.
Latest commit 6e7bb85 Jul 12, 2018
Permalink
Failed to load latest commit information.
3rdparty Update wxWidgets to 3.1.1rc Feb 10, 2018
artwork Update stock icon with higher-resolution sizes Nov 18, 2014
bin Add DSA signature verification (OpenSSL based) Dec 17, 2017
cmake Fix non MSVC link issue Jan 10, 2018
examples Add examples for signature verification Dec 17, 2017
include Increase version to 0.6.0, update NEWS Feb 10, 2018
pascal Fix non MSVC link issue Jan 10, 2018
src Enable HTTP/2 where supported Jul 12, 2018
translations Update translations from Crowdin Jul 12, 2018
.gitattributes Include gettext tools nuget package May 15, 2015
.gitignore Added bindings for Pascal (FPC, Delphi). May 12, 2016
.gitmodules Use https for wxwidgets submodule instead of git (#164) Feb 17, 2018
AUTHORS Fix maintainer email address Feb 5, 2016
COPYING Merge branch 'signature-verification' Feb 6, 2018
NEWS Increase version to 0.6.0, update NEWS Feb 10, 2018
README.md Fix typo in README.md Feb 17, 2018
WinSparkle-2010.sln Use static build of OpenSSL Feb 4, 2018
WinSparkle-2010.vcxproj Use static build of OpenSSL Feb 4, 2018
WinSparkle-2010.vcxproj.filters Add DSA signature verification (OpenSSL based) Dec 17, 2017
WinSparkle-2012.sln Use static build of OpenSSL Feb 4, 2018
WinSparkle-2012.vcxproj Use static build of OpenSSL Feb 4, 2018
WinSparkle-2012.vcxproj.filters Add DSA signature verification (OpenSSL based) Dec 17, 2017
WinSparkle-2013.sln Use static build of OpenSSL Feb 4, 2018
WinSparkle-2013.vcxproj Use static build of OpenSSL Feb 4, 2018
WinSparkle-2013.vcxproj.filters Add DSA signature verification (OpenSSL based) Dec 17, 2017
WinSparkle-2015.sln Use static build of OpenSSL Feb 4, 2018
WinSparkle-2015.vcxproj Use static build of OpenSSL Feb 4, 2018
WinSparkle-2015.vcxproj.filters Add DSA signature verification (OpenSSL based) Dec 17, 2017
WinSparkle.Targets Update Gettext.Tools to 0.19.8.1 Jul 9, 2016
WinSparkle.bkl Update wxWidgets to 3.1.1rc Feb 10, 2018
WinSparkle.sln Use static build of OpenSSL Feb 4, 2018
WinSparkle.vcproj Use static build of OpenSSL Feb 4, 2018
distrib.makefile Fix distrib.makefile to create bin/ directory Feb 24, 2018
packages.config Update Gettext.Tools to 0.19.8.1 Jul 9, 2016

README.md

Build status Crowdin

About

WinSparkle is a plug-and-forget software update library for Windows applications. It is heavily inspired by the Sparkle framework for OS X written by Andy Matuschak and others, to the point of sharing the same updates format (appcasts) and having very similar user interface.

See https://winsparkle.org for more information about WinSparkle.

Documentation: wiki and the winsparkle.h header.

Using prebuilt binaries

The easiest way to use WinSparkle is to download the prebuilt WinSparkle.dll binary.

Building from sources

If you prefer to build WinSparkle yourself, you can do so. You'll have to compile from a git checkout; some of the dependencies are included as git submodules.

Check the sources out and initialize the submodules:

$ git clone git://github.com/vslavik/winsparkle.git
$ cd winsparkle
$ git submodule init
$ git submodule update

To compile the library, just open WinSparkle.sln (or the one corresponding to your compiler version) solution and build it.

At the moment, projects for Visual C++ (2008 and up) are provided, so you'll need that (Express/Community edition suffices). In principle, there's nothing in the code preventing it from being compiled by other compilers.

There are also unsupported CMake build files in the cmake directory.

DSA signatures

WinSparkle uses exactly same mechanism for signing and signature verification as Sparkle Project does. Its tools and verification methods are fully compatible.

You may use any compatible way to sign your update. To achieve this, you need to sign SHA1 (in binary form) of your update file with DSA private key, using SHA1 digest.

WinSparkle provides tools to generate keys and sign the update using OpenSSL.

You need openssl.exe available on Windows to use those tools (available as precompiled binary).

Alternatively, you can generate keys and sign your updates even on macOS or Linux, using tools provided by Sparkle project.

Prepare signing with DSA signatures:

  • First, make yourself a pair of DSA keys. This needs to be done only once. WinSparkle includes a tool to help: bin\generate_keys.bat
  • Back up your private key (dsa_priv.pem) and keep it safe. You don’t want anyone else getting it, and if you lose it, you may not be able to issue any new updates.
  • Add your public key (dsa_pub.pem) to your project either as Windows resource, or any other suitable way and provide it using WinSparkle API.

Sign your update

When your update is ready (e.g. Updater.exe), sign it and include signature to your appcast file:

  • Sign: bin\sign_update.bat Updater.exe dsa_priv.pem
  • Add standard output of previos command as sparkle:dsaSignature attribute of enclosure node of your appcast file. Alternatively sparkle:dsaSignature can be a child node of enclosure.

Where can I get some examples?

Download the sources archive and have a look at the examples/ folder.

Using latest development versions

If you want to stay at the bleeding edge and use the latest, not yet released, version of WinSparkle, you can get its sources from public repository. WinSparkle uses git and and the sources are hosted on GitHub at https://github.com/vslavik/winsparkle

WinSparkle uses submodules for some dependencies, so you have to initialize them after checking the tree out:

$ git clone git://github.com/vslavik/winsparkle.git
$ cd winsparkle
$ git submodule init
$ git submodule update

Then compile WinSparkle as described above; no extra steps are required.