Feature Request: Official Windows Package Manager (winget) Support #2461

Open
opened 2025-11-20 07:10:04 -05:00 by saavagebueno · 2 comments
Owner

Originally created by @spupuz on GitHub (Nov 14, 2025).

  1. Goal

The primary goal is to establish and maintain an official, vendor-published presence for the NetBird Windows Client within the Windows Package Manager Community Repository (winget).

This ensures that IT professionals and end-users can install, upgrade, and manage the NetBird client using a single command: winget install NetBird.NetBird.

  1. Benefits

Simplified Deployment (Zero-Touch): Enables silent, machine-wide installation, which is crucial for mass deployment via tools like PowerShell, RMM, or provisioning scripts.

Automated Updates: Users can update the NetBird client alongside all other applications using a single command: winget upgrade --all.

Configuration Management: Allows NetBird to be included in declarative machine setup via WinGet Configuration files.

Security and Trust: Official publication and maintenance ensure package integrity and timely updates, as the manifest points directly to the NetBird-hosted installer.

<html>

. Technical Specification

3.1. Package Details

Field | Value | Notes -- | -- | -- Package Identifier | NetBird.NetBird | Vendor-prefixed and unique identifier. Package Name | NetBird |   Publisher | NetBird GmbH | Official publisher name. License | BSD-3-Clause | Based on NetBird's known license. Minimum OS Version | 10.0.17763.0 (Windows 10, v1809) | Minimum version for winget support.

3.3. Sample Manifest (Example for Version 0.59.12)

This sample YAML file provides the foundation for the package manifest, which would be submitted to the microsoft/winget-pkgs repository. This example targets the x64 architecture using the Inno Setup EXE installer.

# yaml-language-server: $schema=[https://aka.ms/winget-manifest.installer.1.5.0.schema.json](https://aka.ms/winget-manifest.installer.1.5.0.schema.json)
PackageIdentifier: NetBird.NetBird
PackageVersion: 0.59.12
MinimumOSVersion: 10.0.17763.0
InstallerType: inno
Scope: machine
InstallModes:
- silent
- silentWithProgress
InstallerSwitches:
  Silent: /SILENT /NORESTART
  SilentWithProgress: /VERYSILENT /NORESTART
UpgradeBehavior: install
ProductCode: NetBird
Installers:
- Architecture: x64
  InstallerUrl: [https://github.com/netbirdio/netbird/releases/download/v0.59.12/netbird_installer_0.59.12_windows_amd64.exe](https://github.com/netbirdio/netbird/releases/download/v0.59.12/netbird_installer_0.59.12_windows_amd64.exe)
  InstallerSha256: <SHA256_HASH_OF_INSTALLER_GOES_HERE>
  # For MSI, the following would be used instead of the Inno Setup switches:
  # InstallerType: msi
  # InstallerSwitches:
  #   Silent: /qn /norestart
ManifestType: installer
ManifestVersion: 1.5.0

4. Implementation Steps

  1. Tooling Setup: Integrate wingetcreate into the NetBird release pipeline.

  2. Manifest Generation: Automate the creation of the YAML manifest using the release tag (e.g., v0.59.12), the installer URL, and the generated SHA256 hash.

  3. Submission Automation: Configure the CI/CD pipeline (e.g., GitHub Actions) to automatically submit a Pull Request to the microsoft/winget-pkgs repository upon every successful Windows client release. This ensures that the winget package is updated immediately after a new version is published.

  4. Testing: Validate the manifest using winget validate <manifest-file.yaml> and test silent installation using the generated manifest.

</html>
Originally created by @spupuz on GitHub (Nov 14, 2025). 1. Goal The primary goal is to establish and maintain an official, vendor-published presence for the NetBird Windows Client within the Windows Package Manager Community Repository (winget). This ensures that IT professionals and end-users can install, upgrade, and manage the NetBird client using a single command: winget install NetBird.NetBird. 2. Benefits Simplified Deployment (Zero-Touch): Enables silent, machine-wide installation, which is crucial for mass deployment via tools like PowerShell, RMM, or provisioning scripts. Automated Updates: Users can update the NetBird client alongside all other applications using a single command: winget upgrade --all. Configuration Management: Allows NetBird to be included in declarative machine setup via [WinGet Configuration files](https://learn.microsoft.com/en-us/windows/package-manager/configuration/). Security and Trust: Official publication and maintenance ensure package integrity and timely updates, as the manifest points directly to the NetBird-hosted installer. <html><body> <!--StartFragment--><h2 data-pm-slice="1 3 []">. Technical Specification</h2><h3>3.1. Package Details</h3> Field | Value | Notes -- | -- | -- Package Identifier | NetBird.NetBird | Vendor-prefixed and unique identifier. Package Name | NetBird |   Publisher | NetBird GmbH | Official publisher name. License | BSD-3-Clause | Based on NetBird's known license. Minimum OS Version | 10.0.17763.0 (Windows 10, v1809) | Minimum version for winget support. <h3>3.3. Sample Manifest (Example for Version 0.59.12)</h3><p>This sample YAML file provides the foundation for the package manifest, which would be submitted to the <code>microsoft/winget-pkgs</code> repository. This example targets the <code>x64</code> architecture using the Inno Setup EXE installer.</p><pre><code># yaml-language-server: $schema=[https://aka.ms/winget-manifest.installer.1.5.0.schema.json](https://aka.ms/winget-manifest.installer.1.5.0.schema.json) PackageIdentifier: NetBird.NetBird PackageVersion: 0.59.12 MinimumOSVersion: 10.0.17763.0 InstallerType: inno Scope: machine InstallModes: - silent - silentWithProgress InstallerSwitches: Silent: /SILENT /NORESTART SilentWithProgress: /VERYSILENT /NORESTART UpgradeBehavior: install ProductCode: NetBird Installers: - Architecture: x64 InstallerUrl: [https://github.com/netbirdio/netbird/releases/download/v0.59.12/netbird_installer_0.59.12_windows_amd64.exe](https://github.com/netbirdio/netbird/releases/download/v0.59.12/netbird_installer_0.59.12_windows_amd64.exe) InstallerSha256: &lt;SHA256_HASH_OF_INSTALLER_GOES_HERE&gt; # For MSI, the following would be used instead of the Inno Setup switches: # InstallerType: msi # InstallerSwitches: # Silent: /qn /norestart ManifestType: installer ManifestVersion: 1.5.0 </code></pre><h2>4. Implementation Steps</h2><ol><li><p><strong>Tooling Setup:</strong> Integrate <code>wingetcreate</code> into the NetBird release pipeline.</p></li><li><p><strong>Manifest Generation:</strong> Automate the creation of the YAML manifest using the release tag (e.g., <code>v0.59.12</code>), the installer URL, and the generated SHA256 hash.</p></li><li><p><strong>Submission Automation:</strong> Configure the CI/CD pipeline (e.g., GitHub Actions) to automatically submit a Pull Request to the <code>microsoft/winget-pkgs</code> repository upon every successful Windows client release. This ensures that the <code>winget</code> package is updated immediately after a new version is published.</p></li><li><p><strong>Testing:</strong> Validate the manifest using <code>winget validate &lt;manifest-file.yaml&gt;</code> and test silent installation using the generated manifest.</p></li></ol><!--EndFragment--> </body> </html>
saavagebueno added the feature-request label 2025-11-20 07:10:04 -05:00
Author
Owner

@1nerdyguy commented on GitHub (Nov 14, 2025):

I like the idea.

My concern though, with any winget package, is that it appears to be the least used and updated application publication method.

To the point where I can't respectively use it in production because MS apps and 3rd party ones tend to lag behind by VERSIONS, not just a point release.

I wish it was better.

@1nerdyguy commented on GitHub (Nov 14, 2025): I like the idea. My concern though, with any winget package, is that it appears to be the least used and updated application publication method. To the point where I can't respectively use it in production because MS apps and 3rd party ones tend to lag behind by VERSIONS, not just a point release. I wish it was better.
Author
Owner

@spupuz commented on GitHub (Nov 14, 2025):

i use it for all other appsand it's a good way to have a single point for updating everything.

@spupuz commented on GitHub (Nov 14, 2025): i use it for all other appsand it's a good way to have a single point for updating everything.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/netbird#2461