Leserartikel Eine kurze Einfuehrung zu winget

Im Zuge des WinRAR Threads ist des oefteren winget erwaehnt worden, insbesondere aus der Warte heraus, das WinRAR keinen automatischen Updater hat, und deswegen ein Update haeufig nicht durchgefuehrt wird.
Jetzt gibts eine Luecke in 7Zip, welches ebenfalls keinen eigenen Updater mitbringt, also noch ein Fall fuer winget :D

winget ist ein Kommandozeilenprogramm, welches Windows seit Windows 10 1709 kennt. Also schon echt lange.

Und kaum jemand kennt es.

Ich moechte diesen kurzen Artikel schreiben um das Bewusstsein fuer winget zu schaerfen. Zeigen was es kann, was es nicht kann, und wie man es verwendet.
Meine Beispiele kommen alle von Windows 10 22H2. Ich habe zwar ein Windows 11 on ARM Geraet auf dem winget ebenfalls funktioniert, aber das ist wenig repraesentativ weil dort nur sehr wenig Software installiert ist.

Was ist winget?
Winget wird auch als "Windows Package Manager" bezeichnet, eine Paketverwaltung fuer Windows, angelehnt an Paketverwaltungen wie sie unter Linux ueblich sind. Wikipedia: Windows Package Manager
Mit winget kann man Software unabhaengig vom Microsoft Store installieren und updaten.
Dabei greift es auf Installationsdateien direkt bei den Softwareanbietern zurueck.

Was braucht man um winget zu verwenden?
In aktuellen Versionen von Windows 10 und 11 ist Winget mitgeliefert und muss nicht nachinstalliert werden.
Man braucht kein Microsoft Konto um winget zu verwenden, ein lokales Konto funktioniert genauso.
Was man aber braucht ist ein Internetzugang, denn winget bezieht noetige Dateien direkt.

WingetUI ist eine GUI Alternative, die auch einfacher mit anderen Quellen umgehen kann. Mangels eigener Erfahrungen ist WingetUI aber nicht Thema dieses Posts.

Was kann man mit winget machen?
Man kann mit winget zahlreiche Windowsprogramme ueber die Kommandozeile installieren. Man kann alle, oder einzelne (unterstuetze) Programme aktualisieren.
Dabei laedt winget die jeweiligen Programme von ihren offiziellen Quellen herunter.

Wie benutzt man winget?
Um winget zu verwenden, startet man am besten ein administratives Terminal. Hat man das nicht, loest jedes Paket seine eigene UAC Abfrage aus.
Meine Beispiele kommen aus der Powershell, bis auf das "--query" Beispiel sollte alles so aber auch in der CMD funktionieren.
Programmnamen sind nicht casesensitiv. Wenn ein Leerzeichen im Programmnamen vorkommt, muessen Anfuehrungszeichen gesetzt werden.

winget list listet alle installierten Programme auf. Diese Liste enthaelt auch Windows Store Apps, die bei der Programmauflistung in der Systemsteuerung nicht enthalten sind. Besonderes Augenmerk sei auf die letzte Spalte gerichtet: Steht dort "winget", kennt winget das Programm und kann es gegebenenfalls updaten.
In einer Powershell kann winget list | sort verwendet werden um die Liste alphabetisch zu haben

Winget unterstuetzt ueber 5.000 Programme. Eine vollstaendige Liste kann mit winget search --query `"`" | sort >> winget.txt in eine Textdatei geschrieben werden. Der Output ist viel zu viel fuer die Shell selbst :D

winget install "<Programmname>" installiert Programme. Dabei funktionieren auch unvollstaendige Programmnamen, das Ergebnis muss nur eindeutig sein. Ist es nicht eindeutig bekommt man eine Fehlermeldung mit der Ansage das man genauer sein muss, wo alle gefundenen Treffer gelistet werden.
Um mal beim einleitenden Thema zu bleiben:
winget install WinRAR laedt WinRAR herunter und startet den Installer.


winget uninstall "<Programmname>" kann Programme aus der Liste deinstallieren.
Dementsprechend deinstalliert winget uninstall WinRAR WinRAR auch wieder.

Der aber eigendlich wichtigste Punkt:
winget kann Updates installieren, bzw. Programme updaten. Dabei muessen diese nicht urspruenglich mit winget installiert worden sein.
winget upgrade WinRAR prueft ob es ein Update fuer WinRAR gibt, wenn ja wird es heruntergeladen und installiert.

TL;DR:
winget upgrade --all prueft alle kompatibelen Programme auf Upgrades und installiert diese.
Gegebenenfalls macht ein winget upgrade --all --include-unknown Sinn, aber bei mir wurde nie was damit mehr gefunden als ohne --include-unknown

Weiterfuehrender Link:
https://learn.microsoft.com/de-de/windows/package-manager/winget/

Fuer Anregungen und Ergaenzungen bin ich dankbar und wuerde das ggf. in den Artikel nachpflegen.

EDIT: Informationen ueber die Verwendung von unvollstaendigen Programmnamen hinzugefuegt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: TPD-Andy, SVΞN, nachtlampe und 25 andere
Gibt es ein Befehl mit den man die Programme einzelnd installieren kann? Denn zb zeigt Epic Games Launcher in CMD eine neue Version an, die aber im Launcher gar nicht existiert. Installiert man diese dann über "Winget Upgrade" deeinstalliert er das Programm.
 
Network88 schrieb:
Gibt es ein Befehl mit den man die Programme einzelnd installieren kann?
Ich vermute, du meinst updaten statt installieren?
Code:
winget upgrade --name Chrome
 
  • Gefällt mir
Reaktionen: Network88
@kartoffelpü Cool Danke, probier ich später Mal aus.
Ergänzung ()

Hmm funktioniert leider gar nicht, ich hab winget upgrade und danach dann winget upgrade -- name wie im Bild zu sehen mit und ohne "name" gemacht aber er findet keine Packete. Dies habe ich bei allen durchprobiert, aber keines der Befehle geht.
 

Anhänge

  • Screenshot 2026-07-18 013356.png
    Screenshot 2026-07-18 013356.png
    51,2 KB · Aufrufe: 14
Zuletzt bearbeitet:
Mach mal Anfuehrungszeiche um den Namen des Programmes.
Da ist ja ein Leerzeichen in "Microsoft Gameinput".

Ohne die Anfuehrungszeichen weiss die Konsole nicht, dass es nicht nur nach "Microsoft" suchen muss, wie der Name der Fehlermeldung schon andeutet. Die Anfuehrungszeichen sorgen dafuer, dass der komplette Text zwischen den Anfuehrungszeichen genommen wird.
 
Geht leider auch mit " " weder zusammengeschrieben noch getrennt und mit oder ohne Name nicht. Hab es bei allen durchprobiert bis auf Epic und alle sagen mir "Es wurde kein installiertes Paket gefunden, das den Eingabekriterien entspricht."
 

Anhänge

  • Screenshot 2026-07-18 094142.png
    Screenshot 2026-07-18 094142.png
    39,2 KB · Aufrufe: 10
In deinem Beispiel stimmt der Name dann wieder nicht :D
Das Leerzeichen nicht weglassen, der Name muss schon uebereinstimmen.

winget upgrade --name "Mullvad Browser" sollte funktionieren.

Beispiel was grade bei mir durchlief:
1784361207534.png


Alternativ kannst du auch mit der ID aus der zweiten Spalte arbeiten:

winget upgrade --id MullvadVPN.MullvadBrowser
Da sind keine Leerzeichen drin, also braucht man da keine Anfuehrungszeichen.
 
  • Gefällt mir
Reaktionen: Network88, aragorn92 und kartoffelpü
Ranayna schrieb:
In deinem Beispiel stimmt der Name dann wieder nicht :D
Das Leerzeichen nicht weglassen, der Name muss schon uebereinstimmen.

winget upgrade --name "Mullvad Browser" sollte funktionieren.

Beispiel was grade bei mir durchlief:
Anhang anzeigen 1747118

Alternativ kannst du auch mit der ID aus der zweiten Spalte arbeiten:

winget upgrade --id MullvadVPN.MullvadBrowser
Da sind keine Leerzeichen drin, also braucht man da keine Anfuehrungszeichen.

Nun geht es, der winget upgrade --name "Mullvad Browser" war korrekt. Danke sehr :)
 
warum nicht einfach so? Die IDs bekommt man ja präsentiert, da braucht es kein --name und keine Anführungszeichen... und den Namen kennt man ja auch nur ganz selten wirklich auswendig ohne sich die Auflistung zu geben...
winget upgrade MullvadVPN.MullvadBrowser

Spätestens bei der .net Desktop Runtime sieht man auch, warum es besser ist die IDs zu verwenden...

@Ranayna: das --id kann man sich auch sparen...
man kann auch einfach mehrere IDs hintereinander angeben, z.B. winget upgrade Bruno.Bruno Nushell.Nushell
 
  • Gefällt mir
Reaktionen: Network88 und aragorn92
Zurück
Oben