Skip to content

Quick and easy installer and automatic updates for cross-platform dotnet applications

License

Notifications You must be signed in to change notification settings

alexachso/velopack

 
 

Repository files navigation

Velopack Logo

Nuget Discord Build Codecov License

Velopack is an installation and auto-update framework for cross-platform .NET applications. It's opinionated, extremely easy to use with zero config needed. With just one command you can be up and running with an installable application, and it's lightning fast for your users, too.

Features

  • 😍 Zero config – Velopack takes your dotnet build output (eg. dotnet publish), and generates an installer, and updates and delta packages in a single command.
  • 🎯 Cross platform – Velopack supports building packages for Windows, OSX, and Linux. No matter your target, Velopack can create a release in just one command.
  • 🚀 Automatic migrations - If you are coming from Squirrel.Windows or Clowd.Squirrel, Velopack will automatically migrate your application. Just build your Velopack release and deploy!
  • ⚡️ Lightning fast – Velopack is written in Rust for native performance. Creating releases is multi-threaded, and produces delta packages for ultra fast app updates. Applying update packages is highly optimised, and often can be done in the background.
cli_demo.mp4

Getting Started

This is a very simple example of the steps you would take to generate an installer and update packages for your application. Be sure to read the documentation for an overview of more features!

  1. Install the command line tool vpk:
    dotnet tool update -g vpk
  2. Install the Velopack NuGet Package in your main project:
    dotnet add package Velopack
  3. Configure your Velopack app at the beginning of Program.Main:
    static void Main(string[] args)
    {
        VelopackApp.Build().Run();
        // ... your other startup code below
    }
  4. Publish dotnet and build your first Velopack release! 🎉
    dotnet publish -c Release --self-contained -r win-x64 -o .\publish
    vpk pack -u YourAppId -v 1.0.0 -p .\publish -e yourMainApp.exe
  5. Add automatic updating to your app:
    private static async Task UpdateMyApp()
    {
        var mgr = new UpdateManager("https://the.place/you-host/updates");
    
        // check for new version
        var newVersion = await mgr.CheckForUpdatesAsync();
        if (newVersion == null)
            return; // no update available
    
        // download new version
        await mgr.DownloadUpdatesAsync(newVersion);
    
        // install new version and restart app
        mgr.ApplyUpdatesAndRestart();
    }

If you're not sure how these instructions fit into your app, check the example apps for common scenarios such as WPF or Avalonia.

Documentation

Community

Contributing

Testimonials

I have now got my external facing application using velopack. I am very impressed. Seems to work fabulously well and be much faster both in the initial build and in the upgrading of the software on the end user's machine than Squirrel was. It's amazing and the best installer I've ever used in over 30 years of development. Thanks so much! You are doing some great work! - Stefan (Discord)

Just wanted to say a huge thank you. I've been using Clowd.Squirrel for a couple of years now since Squirrel.Windows wasn't working for me. Just popped into that repository today to look for some documentation and noticed the release of Velopack. How unexpected! It works fantastic and is so much faster, wow! Thank you again, the amount of work that went into both Clowd.Squirrel and Velopack is staggering. It's very appreciated. - Kizari (Discord)

I've used a lot of installer frameworks and Velopack is by far the best. Everything is like magic: you run the installer, and then the app is just open, ready to use. Updates apply and relaunch in ~2 seconds with no UAC prompts. The installer creation process is painless and integrates easily with code signing, and the command-line tool makes it simple to upload your updater files. You don't need to futz with separate installer scripts in some weird language; you can build all those hooks into your main app! The support is also phenominal; every concern I've had has been addressed. This is the future of desktop installers. - RandomEngy (Discord)

About

Quick and easy installer and automatic updates for cross-platform dotnet applications

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 82.3%
  • Rust 17.4%
  • Other 0.3%