All Projects → vslavik → Winsparkle

vslavik / Winsparkle

Licence: other
App update framework for Windows, inspired by Sparkle for macOS

Projects that are alternatives of or similar to Winsparkle

Githubupdates
Cocoa framework to install application updates from GitHub releases.
Stars: ✭ 393 (-58.15%)
Mutual labels:  update
Update4j
Create your own auto-update framework
Stars: ✭ 497 (-47.07%)
Mutual labels:  update
Diun
Receive notifications when an image is updated on a Docker registry
Stars: ✭ 704 (-25.03%)
Mutual labels:  update
Nupdate
A comfortable update solution for .NET-applications.
Stars: ✭ 394 (-58.04%)
Mutual labels:  update
Nukeeper
Automagically update nuget packages in .NET projects
Stars: ✭ 437 (-53.46%)
Mutual labels:  update
Fileb0x
a better customizable tool to embed files in go; also update embedded files remotely without restarting the server
Stars: ✭ 583 (-37.91%)
Mutual labels:  update
Pipupgrade
🗽 Like yarn outdated/upgrade, but for pip. Upgrade all your pip packages and automate your Python Dependency Management.
Stars: ✭ 391 (-58.36%)
Mutual labels:  update
Core Update Manager
A Performant Update Manager for Unity
Stars: ✭ 25 (-97.34%)
Mutual labels:  update
Hdiffpatch
a C\C++ library and command-line tools for Diff & Patch between binary files or directories(folder); cross-platform; run fast; create small delta/differential; support large files and limit memory requires when diff & patch.
Stars: ✭ 459 (-51.12%)
Mutual labels:  update
Why Did You Render
why-did-you-render by Welldone Software monkey patches React to notify you about potentially avoidable re-renders. (Works with React Native as well.)
Stars: ✭ 7,695 (+719.49%)
Mutual labels:  update
Django Bulk Update
Bulk update using one query over Django ORM
Stars: ✭ 404 (-56.98%)
Mutual labels:  update
Updatefun
Android APP update library./android app自动检测更新库
Stars: ✭ 435 (-53.67%)
Mutual labels:  update
Laravel Initializer
A convenient way to initialize your application
Stars: ✭ 597 (-36.42%)
Mutual labels:  update
Self update
Self updates for rust executables
Stars: ✭ 394 (-58.04%)
Mutual labels:  update
Dasel
Query, update and convert data structures from the command line. Comparable to jq/yq but supports JSON, TOML, YAML, XML and CSV with zero runtime dependencies.
Stars: ✭ 759 (-19.17%)
Mutual labels:  update
Siren
Siren checks a user's currently installed version of your iOS app against the version that is currently available in the App Store.
Stars: ✭ 3,892 (+314.48%)
Mutual labels:  update
Cpm.cmake
📦 CMake's missing package manager. A small CMake script for setup-free, cross-platform, reproducible dependency management.
Stars: ✭ 560 (-40.36%)
Mutual labels:  update
Appupdatewrapper
A wrapper for Android `AppUpdateManager` to encapsulate update workflow
Stars: ✭ 26 (-97.23%)
Mutual labels:  update
Github Funding Yml Updater
Update multiple repositories's `.github/FUNDING.yml` via GitHub API
Stars: ✭ 17 (-98.19%)
Mutual labels:  update
Sparkle
A software update framework for macOS
Stars: ✭ 5,662 (+502.98%)
Mutual labels:  update

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.

Bindings

WinSparkle has a C API that makes it easy to use from many modern languages in addition to C/C++. In addition to that, several bindings for popular languages exist:

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++ (2010 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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].