Loading repository data…
Loading repository data…
NetSparkleUpdater / repository
NetSparkle is a C#, cross-platform, highly-configurable software update framework with pre-built UI for .NET developers compatible with .NET 4.6.2/.NET 6+, WinForms, WPF, and Avalonia; uses Ed25519 signatures. View basic usage here in the README and try the samples for yourself.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
NetSparkle is a highly-configurable software update framework for C# that is compatible with .NET 6+ and .NET Framework 4.6.2+, has pre-built UIs for .NET Framework (WinForms, WPF) and .NET 6+ (WinForms, WPF, Avalonia), uses Ed25519 or other cryptographic signatures, and even allows for custom UIs or no built-in UI at all! You provide, somewhere on the internet, an app cast with update and version information, along with release notes in Markdown or HTML format. This library then helps you check for an update, show the user the release notes, and offer to download/install the new version of the software.
Built-in supported update download types:
Please see UPGRADING.md for information on major version changes, updates, etc.
NetSparkle is available via NuGet. To choose a NuGet package to use:
NetSparkleUpdater.SparkleUpdater package if you don't care about having a built-in UI and can manage things yourself| Package | Use Case | Release | Preview | Downloads |
|---|---|---|---|---|
| NetSparkleUpdater.SparkleUpdater | Core package; Use a 100% custom UI or no UI (nothing built-in) | |||
| WinForms UI (.NET Framework) | NetSparkle with built-in WinForms UI | |||
| WinForms UI (.NET 6+) | NetSparkle with built-in WinForms UI | |||
| WPF UI (.NET Framework and .NET 6+) | NetSparkle with built-in WPF UI | |||
| Avalonia UI | NetSparkle with built-in Avalonia UI | |||
| App Cast Generator Tool | netsparkle-generate-appcast CLI tool (incl. Ed25519 helpers) | |||
| DSA Helper Tool | netsparkle-dsa CLI tool (DSA helpers) |
Quick info for tool installations:
dotnet tool install --global NetSparkleUpdater.Tools.AppCastGenerator; available as netsparkle-generate-appcast on your command line after installationdotnet tool install --global NetSparkleUpdater.Tools.DSAHelper; available as netsparkle-dsa on your command line after installationA typical software update path for a stereotypical piece of software might look like this:
dotnet publish)Right now, NetSparkleUpdater does not help you with 1., 2., or 4. "Why not?", you might ask:
sudo for whatever reason, there is an example of doing that in the macOS Avalonia sample.To create your app cast file, see the app cast section of this document.
We are open to contributions that could make the overall install/update process easier for the user. For example, adding upload functionality from the app cast generator to an FTP or GitHub release or similar might be a useful feature for some users. Please file an issue first with your idea before starting work so we can talk about it.
Please look at the sample projects in this repository for basic, runnable usage samples!! There are samples on using each of the built-in UIs as well as a "do it yourself in your own UI" sample!
dotnet tool install --global NetSparkleUpdater.Tools.AppCastGeneratornetsparkle-generate-appcast --generate-keys
# By default, your Ed25519 signatures are stored on disk in your local
# application data folder in a subdirectory called `netsparkle`.
# If you want to export your keys to the console, you can do:
netsparkle-generate-appcast --export
MainWindow or main form or similar:private SparkleUpdater _sparkle;
// on your main thread...
_sparkle = new SparkleUpdater(
"https://mywebsite.com/appcast.xml", // link to your app cast file - change extension to .json if using json
new Ed25519Checker(SecurityMode.Strict, // security mode -- use .Unsafe to ignore all signature checking (NOT recommended!!)
"base_64_public_key_from_generate_app_cast_tool") // your base 64 public key
) {
UIFactory = new NetSparkleUpdater.UI.WPF.UIFac