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: SVΞN, nachtlampe, TeehLukas und 24 andere
tollertyp schrieb:
Code:
winget upgrade -a x64 RealVNC.VNCViewer
Also 100% glücklich bin ich mit winget nicht. Jetzt versucht es tatsächlich, hier eine 32-Bit-Version zu installieren auf meinem 64-Bit-System.

Anhang anzeigen 1400024
Aus dem Fehlerlog:


Obwohl die zip beide enthält...
Anhang anzeigen 1400025
Du musst direkt vor RealVNC.VNCViewer den -a (--architecture) Paramter angeben.
In deinem Fall wäre es:
Code:
winget upgrade --architecture x64 RealVNC.VNCViewer
 
  • Gefällt mir
Reaktionen: Ranayna
winget soll portable Programme (ohne Installationseintrag) unterstützen.
Weiß jemand, wie ich solche Programme prüfen/aktualisieren kann?
 
Da sollte alles zu winget mit "portablen" Programmen stehen. Selber genutzt habe ich es aber noch nicht für solche Programme.
 
@aragorn92. Klingt in der Theorie gut. In der Praxis sieht es so aus:

1695304250397.png
 
Hmm, das duerfte dann ein Bug sein, in dem .zip sind ja beide Versionen drin, die MSI Installer gibt es, warum auch immer, nicht einzeln zum Download.

Das gehoert vermutlich zu den Dingen die in den Repos, wenn nicht sogar im Code, manuell beruecksichtigt werden muessen, wenn RealVNC da etwas spezielleres macht.
 
  • Gefällt mir
Reaktionen: aragorn92
tollertyp schrieb:
@aragorn92. Klingt in der Theorie gut. In der Praxis sieht es so aus:

Anhang anzeigen 1400112

Wenn ich mich direkt am Administratorkonto anmelde und die Powershell oder die Eingabeaufforderung als Administrator starte, funktioniert zumindest die Installation der 64-Bit Version. Da ich keine ältere Version von dem Programm habe, kann ich es leider nicht mit upgrade probieren. Vielleicht klappt es, wenn du dich an einem Konto mit Adminrechten anmeldest und dort die Powershell oder Eingabeaufforderung als Administator ausführst.
 
  • Gefällt mir
Reaktionen: tollertyp
Okay, verwirrend, mal fragt mich winget (bzw. der Installer) nach administrativen Rechten, mal nicht...

Mit administrativen Rechten gestartete Konsole hat das dann gemacht, @aragorn92
 
Noch eine dumme Frage:
1695547679382.png


1695547699095.png


Was mache ich da falsch? War auf verschiedenen Geräten das gleiche Verhalten. Installiere nun manuell die neue Version (selbst bei Windows Update taucht es (noch) nicht auf).

(Eingabeauffoderung mit Administrativen Rechten)

Nach der Installation der neuen Vesion sieht es in der Liste der installierten Apps so aus:
1695547945102.png

Evtl funktioniert es dann jetzt in Zukunft besser, die 7.3.6 deinstalliere ich noch manuell.
 
  • Gefällt mir
Reaktionen: aragorn92
Ohhh, jetzt hat winget bei mir auch Mist gebaut :D
Erstmal wollte ich schauen ob das Problem mit der Microsoft Windows Desktop Runtime immer noch da ist, was bei jedem winget update --all aktualisiert wird.
Jetzt hat winget mir beim zweiten Durchlauf den Unity Hub "upgedatet", den ich letztens deinstalliert hatte...

Und das Problem mit der Desktop Runtime ist auch noch da...
 
  • Gefällt mir
Reaktionen: aragorn92
Okay, etwas wieder zu installieren, was man deinstalliert hat, ist "Mist".
Bei mir hat es zumindest kaum was falsches gemacht (mal davon abgesehen, dass Dinge wie Vortex, nach einem Update nicht mehr dort installiert sind, wo ich sie installiert hatte, also es halt zwei Mal da war dann...). Aber das entstand halt auch, weil ich Vortex nicht über Winget installiert hatte.

Meiner Meinung nach ist Winget schon nützlich, aber man muss sich halt auch daran "anpassen"/vertraut machen.
 
  • Gefällt mir
Reaktionen: aragorn92
Also stellenweise geht mir winget richtig auf den Sack:
1699777485426.png


Gerade bei den Visual C++ Redistributables kommt es bei mir häufig durcheinander welche Architektur ich meine...

Okay, bei den Redistributables hilft es auch, manuell veraltete Versionen zu deinstallieren, also winget erkennt, dass z.B. Version 8.0.56336 installiert ist, sagt Version 8.0.61001 ist aktuell und verfügbar, aber macht nichts, und wenn ich prüfe, dann ist die aktuelle bei mir schon seit Monaten installiert und die ältere wurde von irgendeiner Software später nachinstalliert. Hab nun solche alten Versionen manuell wieder deinstalliert.

Und das muss ich auch nicht verstehen, oder (war noch vor meinem Aufräumen mit den Redistributables)?
1699778361593.png

Die anderen Desktop-Runtimes sind nach wie vor noch installiert.

Edit:
Hier was ich meine mit dem Durcheinanderkommen:
1699778602763.png
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: aragorn92
Eine weitere Info, man kann wie bei Homebrew unter dieser Webseite https://winget.run/ nach Paketen suchen und direkt den Installations-Befehl kopieren. Der kann gerade bei Winget etwas komplizierter ausfallen, bzw. die Paketnamen sind uneindeutig.
 
@tollertyp: Mit verschiedenen Versionen des selben Programms fuer x86 und x64 hat winget wohl wirklich Probleme.
Aber was mich in deinem Fall mehr ueberrascht: Ich haette nicht gedacht das die alten Redistributables noch Updates bekommen :D
 
Teilweise waren ja sogar die neuen Versionen schon installiert, aber so lange die alte Version noch (bzw. wieder) installiert ist, taucht es halt als updatefähige Software auf.
 
Tatsächlich scheint WingetUI ein paar Mängel von winget zu beheben:
Hier wieder Konfusion bei x64 vs x86:
1699794319609.png

So wird mir das unter WingetUI angezeigt:
1699794284861.png


Hab hier über WingetUI aktualisiert, und das war erfolgreich. Weiß jetzt nicht, was winget auf der Kommandozeile gemacht hätte.
 
Ich verstehe Winget und WingetUI irgendwie nicht...
1700172878817.png


Bei der PowerShell scheiterte Winget genauso wie WingetUI:
1700172955170.png
 
Schon bisschen alt hier aber
ich habe gerade winget am probieren.

Das Ding produziert immer Fehler beim uninstall und install aber wenn ich es dann in der App prüfe lief alles korrekt abgelaufen.

Beispiel:

Code:
winget upgrade Tutanota.Tutanota
Gefunden Tutanota Desktop [Tutanota.Tutanota] Version 220.240411.0
Diese Anwendung wird von ihrem Besitzer an Sie lizenziert.
Microsoft ist nicht verantwortlich und erteilt keine Lizenzen für Pakete von Drittanbietern.
Download läuft https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-220.240411.0/tutanota-desktop-win.exe
  ██████████████████████████████  84.5 MB / 84.5 MB
Der Installer-Hash wurde erfolgreich überprüft
Paketinstallation wird gestartet...
Installation fehlgeschlagen mit Exitcode: 3221226356

Dann kommt das popup "konnte nicht deinstalliert werden"

Code:
winget uninstall Tutanota.Tutanota
Es wurde kein installiertes Paket gefunden, das den Eingabekriterien entspricht.

winget install Tutanota.Tutanota
Gefunden Tutanota Desktop [Tutanota.Tutanota] Version 220.240411.0
Diese Anwendung wird von ihrem Besitzer an Sie lizenziert.
Microsoft ist nicht verantwortlich und erteilt keine Lizenzen für Pakete von Drittanbietern.
Der Installer-Hash wurde erfolgreich überprüft
Paketinstallation wird gestartet...
Installation fehlgeschlagen mit Exitcode: 3221226356

Bei der Prüfung der App wurde aber alles installiert und ist aktuell.
Ziemlich verwirrend.

PS:
Wenn doch mal gut läuft kann man auch, wer es nicht wusste, upgrades individuell zusammenstellen:

Code:
winget upgrade dotPDN.PaintDotNet dokan-dev.Dokany JAMSoftware.TreeSize.Free

Der arbeitet das dann ab....nice...
 
Zuletzt bearbeitet:
Zurück
Oben