Convert Figma logo to code with AI

Squirrel logoSquirrel.Windows

An installation and update framework for Windows desktop apps

7,315
1,025
7,315
408

Top Related Projects

10,206

Chocolatey - the package manager for Windows

A GitHub API client library for .NET

Quick Overview

Squirrel.Windows is an open-source framework for creating desktop applications on the Windows platform. It provides a simple and efficient way to package, distribute, and update Windows applications, making it easier for developers to deliver their software to users.

Pros

  • Easy Deployment: Squirrel.Windows simplifies the deployment process, allowing developers to create a single installer that can be easily distributed and updated.
  • Automatic Updates: The framework automatically handles application updates, ensuring that users always have the latest version of the software.
  • Cross-Platform Compatibility: Squirrel.Windows is designed to work with a variety of .NET technologies, including WinForms, WPF, and UWP, making it a versatile choice for Windows application development.
  • Open-Source: As an open-source project, Squirrel.Windows benefits from a community of contributors, who help to improve the framework and address any issues that arise.

Cons

  • Limited to Windows: Squirrel.Windows is specifically designed for the Windows platform, which may limit its usefulness for developers targeting other operating systems.
  • Dependency on .NET: The framework is built on the .NET platform, which means that developers must have a working knowledge of .NET technologies to use it effectively.
  • Potential Complexity: While Squirrel.Windows aims to simplify the deployment process, the framework itself can be complex, especially for developers who are new to it.
  • Potential Performance Impact: Depending on the size and complexity of the application, the Squirrel.Windows framework may have a noticeable impact on the application's performance.

Code Examples

Here are a few examples of how to use Squirrel.Windows in your code:

  1. Updating an Application:
using Squirrel;

public async Task UpdateApplication()
{
    using (var updateManager = new UpdateManager("https://example.com/updates"))
    {
        await updateManager.UpdateApp();
    }
}

This code demonstrates how to use the UpdateManager class to check for and apply updates to the application.

  1. Registering a Custom Update Channel:
using Squirrel;

public async Task RegisterCustomUpdateChannel()
{
    using (var updateManager = new UpdateManager("https://example.com/updates"))
    {
        await updateManager.RegisterUpdateChannel("beta", "https://example.com/beta-updates");
    }
}

This code shows how to register a custom update channel, which can be used to provide beta or other specialized updates to users.

  1. Handling Application Events:
using Squirrel;

public class MyApplication : Application
{
    protected override void OnInitialize(InitializeEventArgs e)
    {
        base.OnInitialize(e);
        UpdateManager.Instance.CheckForUpdate();
    }

    protected override void OnActivated(ActivatedEventArgs e)
    {
        base.OnActivated(e);
        UpdateManager.Instance.CheckForUpdate();
    }
}

This example demonstrates how to handle application events, such as initialization and activation, to automatically check for updates.

Getting Started

To get started with Squirrel.Windows, follow these steps:

  1. Install the Squirrel.Windows NuGet package in your Visual Studio project:

    Install-Package Squirrel.Windows
    
  2. Create a new UpdateManager instance and configure it with the URL of your update server:

    using (var updateManager = new UpdateManager("https://example.com/updates"))
    {
        // Perform update-related tasks
    }
    
  3. Use the UpdateManager to check for and apply updates:

    await updateManager.UpdateApp();
    
  4. Optionally, register custom update channels:

    await updateManager.RegisterUpdateChannel("beta", "https://example.com/beta-updates");
    
  5. Handle application events to automatically check for updates:

    protected override void OnInitialize(InitializeEventArgs e)
    {
        base.OnInitialize(e);
        UpdateManager.Instance.CheckForUpdate();
    

Competitor Comparisons

10,206

Chocolatey - the package manager for Windows

Pros of Chocolatey

  • Chocolatey is a well-established and widely-used package manager for Windows, with a large and active community.
  • It supports a wide range of software packages, making it a convenient way to install and manage applications on Windows.
  • Chocolatey has a robust package repository, with thousands of pre-built packages available.

Cons of Chocolatey

  • Chocolatey may have a steeper learning curve compared to Squirrel, especially for users who are new to package management.
  • The Chocolatey package repository may not always have the latest versions of software, as it relies on community contributions.

Code Comparison

Squirrel.Windows:

var updateManager = new UpdateManager("https://example.com/myapp/");
var updateInfo = await updateManager.CheckForUpdate();
if (updateInfo.ReleasesToApply.Count > 0)
{
    await updateManager.UpdateApp();
}

Chocolatey:

choco install firefox
choco upgrade firefox
choco uninstall firefox

A GitHub API client library for .NET

Pros of octokit/octokit.net

  • Comprehensive GitHub API coverage: octokit.net provides a wide range of functionality for interacting with the GitHub API, making it a powerful tool for developers.
  • Cross-platform support: The library is designed to work across multiple .NET platforms, including .NET Standard, .NET Core, and Xamarin, ensuring broader compatibility.
  • Active development and community: The project has a large and active community, with regular updates and bug fixes, ensuring ongoing support and improvements.

Cons of octokit/octokit.net

  • Complexity: The library's extensive feature set can make it more complex to use, especially for developers new to the GitHub API.
  • Performance: Depending on the specific use case, the library's comprehensive functionality may result in slower performance compared to a more lightweight solution.

Code Comparison

Squirrel/Squirrel.Windows:

var updateManager = new UpdateManager("https://example.com/releases/");
var currentVersion = await updateManager.UpdateApp();

octokit/octokit.net:

var github = new GitHubClient(new ProductHeaderValue("MyApp"));
var release = await github.Repository.Release.GetLatest("octokit", "octokit.net");

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

README.md

Contributors Needed

We are looking for help with maintaining this important project - please read the discussion in #1470 for more information.


Squirrel: It's like ClickOnce but Works™

Build Status

Squirrel is both a set of tools and a library, to completely manage both installation and updating your Desktop Windows application, written in either C# or any other language (i.e., Squirrel can manage native C++ applications).

Squirrel uses NuGet packages to create installation and update packages, which means that you probably already know most of what you need to create an installer.

What Do We Want?

Windows apps should be as fast and as easy to install and update as apps like Google Chrome. From an app developer's side, it should be really straightforward to create an installer for my app, and publish updates to it, without having to jump through insane hoops.

  • Integrating an app to use Squirrel should be extremely easy, provide a client API, and be developer friendly.
  • Packaging is really easy, can be automated, and supports delta update packages.
  • Distributing should be straightforward, use simple HTTP updates, and provide multiple "channels" (a-la Chrome Dev/Beta/Release).
  • Installing is Wizard-Free™, with no UAC dialogs, does not require reboot, and is .NET Framework friendly.
  • Updating is in the background, doesn't interrupt the user, and does not require a reboot.

Refer to our full list of goals for integrating, packaging, distributing, installing, and updating.

Documentation

See the documentation Table of Contents for an overview of the available documentation for Squirrel.Windows. It includes a Getting Started Guide as well as additional topics related to using Squirrel in your applications.

Building Squirrel

For the impatient:

git clone --recursive https://github.com/squirrel/squirrel.windows
cd squirrel.windows
devbuild.cmd

See Contributing for additional information on building and contributing to Squirrel.

License and Usage

See COPYING for details on copyright and usage of the Squirrel.Windows software.