An open API service indexing awesome lists of open source software.

https://github.com/johnwbyrd/winsparkle

WinSparkle fork that supports Visual Studio 2019
https://github.com/johnwbyrd/winsparkle

winsparkle

Last synced: 3 months ago
JSON representation

WinSparkle fork that supports Visual Studio 2019

Awesome Lists containing this project

README

        

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](https://sparkle-project.org/documentation/#dsa-signatures)
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](https://github.com/sparkle-project/Sparkle/tree/master/bin).

#### 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](https://github.com/vslavik/winsparkle/wiki) and
the [winsparkle.h header](https://github.com/vslavik/winsparkle/blob/master/include/winsparkle.h).