Skip to content

johnwbyrd/winsparkle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

This is an unauthorized fork of the WinSparkle project by vslavik, specifically to support Visual Studio 2019. This project may be useful for those who wish to do source-level debugging or improvement on the WinSparkle libraries, while using a modern development environment.

WinSparkle wishes to be 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.

The WinSparkle build environment depends on numerous third party libraries, including but not limited to wxWindows, openssl, openssl-windows, and expat. It also depends on bakefile, which is a utility also written by vslavik.

This fork was generated by updating bakefile itself to support more recent versions of Visual Studio. For mopre information, see https://github.com/johnwbyrd/brakefile .

Building from sources

This repository depends heavily on git submodules, some of which in turn depend on other git submodules.

Check the sources out and initialize the submodules:

$ git clone git://github.com/johnwbyrd/winsparkle.git
$ cd winsparkle
$ nuget restore WinSparkle-2017.sln (or similar)
$ git submodule update --init --recursive

To compile the library, just open WinSparkle-20xx.sln solution and build it from within Visual Studio 20xx, or use the msbuild.exe command from a Visual Studio command prompt.

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][OpenSSL binaries]).

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 previous command as sparkle:dsaSignature attribute of enclosure node of your appcast file. Alternatively sparkle:dsaSignature can be a child node of enclosure.

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.