Unofficial GUI for Microsoft's Windows Package Manager (winget). Kinda like Synaptic, but for Windows.
Not associated with Microsoft, and Microsoft does not endorse guinget. Not associated with the Synaptic project, either.
NB: I'm migrating to Codeberg. The canonical repo for guinget is now here, please update your remotes: https://codeberg.org/DrewNaylor/guinget
NB: If you installed winget in a regular user account, you may need to re-install it in an account with Admin permissions before installing guinget or any other packages that use Inno Setup installers. Be sure to update winget's sources before logging off the Admin account and back into your regular account, or winget's sources cache may claim it's corrupted when trying to use it in an Admin command prompt in your regular account.
This may no longer be necessary, at least on the latest update for Windows 10 2004. The purpose for this text was to say that winget doesn't properly elevate Inno Setup installers so you'd have to install them from an elevated CMD, but it seems to do just fine now. In fact, winget doesn't like to run elevated on 2004 from a limited account anymore, but at least it usually elevates installers. Whether this affects other versions of Windows 10 or if it's a bug are uncertain, but 1909 doesn't seem to have this issue.
Update 1-18-2021: It appears this bug affects applications installed via APPX/MSIX packages in general rather than just winget. This is confirmed by trying to run Windows Terminal from an elevated CMD prompt inside a "limited" account. The thing about it working with Inno Setup installers just fine may also be incorrect based on newer testing.
Update 3-10-2021: Versions of Windows 10 other than 2004 appear to be affected sometimes. Not sure what causes it.
Main branch build status/nightly build:
Visual Studio 2019 Community is being used for this project's development, and .NET Framework 4.8 or newer for version 0.1.2 and newer (0.1.1 and older require at least .NET Framework 4.6.1) is required to run it.
Other libraries used (besides .NET):
Licenses for all components included with the distribution are in the files starting with LICENSE
.
There's a project roadmap available, if you're interested.
You can install guinget by running winget install guinget
in an elevated CMD/PowerShell window (just use a regular CMD window if elevating it doesn't work), or by using an installer attached to the latest release. Please note that it may take a few days for new versions to be published to winget, so the Releases page is the fastest way to get new versions.
There's a video showing how to install and use guinget if you wish to watch it, though it only covers up to version 0.1.0.1 alpha.
Since it may be a bit complicated for new users, there's a guide on how to use guinget. I tried to make it work as closely as I could to Synaptic, so if you have experience with Synaptic, guinget should work similarly (mainly with marking packages) with a few exceptions in places I'm less experienced and/or wouldn't work as well on Windows.
The system requirements include .NET Framework 4.8 for version 0.1.2 and newer (previous versions require at least .NET Framework 4.6.1) as mentioned above and winget, but otherwise they don't require all that much power.
Faster computers will perform better with few (if any) lock-ups when it comes to extracting and loading the package list, though. One goal is to eventually eliminate or reduce that lock-up as much as possible, which will require async loading. Not sure how to reliably do it with a datagridview yet, though.
These screenshots are outdated. It would be a good idea to provide new screenshots, so I might at some point.
This is what it looks like as of version 0.1.1:
Packages displayed here are loaded from a package list cache stored in %LocalAppData%\winget-frontends\source\winget-pkgs\pkglist\manifests
, which is downloaded from Microsoft/winget-pkgs
on GitHub. The Refresh cache
button on the toolbar is the primary way to update these manifests.
Loading these YAML files takes a bit at the moment, as it's not async. I'd like to make it async, but for now this is good enough. Besides, there's a progress bar and progress label at the bottom and a label that says "please wait", so it's not like the window shows nothing while it loads. One issue is the window can't be moved around while it loads, which is something async loading would fix.
Newer versions of guinget mainly load package info from the same community database winget itself uses to ensure package info is up to date with what's available to winget. Descriptions and details not available in the database are then loaded from the manifests.
Here's what it looks like when loading the package list:
The data grid view that's used for the package list is hidden while loading so that things go faster. If the data grid view were still visible, it would show all the rows as they're added and slow things down until rows that aren't on screen are being added, at which point it would speed up a lot.
Currently, the Status
column cells just have arbitrary data for now; guinget doesn't check to see if an app is installed or not yet. Package details in the textbox at the bottom are loaded directly from the YAML files.
By default, controls that don't have features implemented yet are hidden, but you can show them if you want to and this is what it looks like when you do so:
More screenshots available in the devlog archive. This document has a few things similar to the readme, but organized more by date and what I tried to do/did do around each time.
Package
column is available in version 0.1 pre-alpha 2.Microsoft/winget-pkgs
one can be used.)winget-pkgs
repo instead of the default one in winget, as well. This could help a lot when winget doesn't want to update its sources correctly due to bugs.