Einleitung
In den ersten drei Teilen unserer Winget-Serie haben wir die Grundlagen, die Installation und die Architektur des Windows Package Managers kennengelernt. Jetzt wird es praktisch.
Die Kommandozeile von Winget bildet die zentrale Schnittstelle zur Softwareverwaltung. Über sie lassen sich Programme suchen, installieren, aktualisieren und deinstallieren. Darüber hinaus kann Winget Softwarebestände exportieren, Installationsdateien herunterladen, Paketquellen verwalten, Updates sperren und sogar den gewünschten Zustand eines Windows-Systems definieren.
Eine Übersicht der verfügbaren Befehle erhalten Sie jederzeit mit:
winget --help
Die Hilfe zu einem bestimmten Befehl lässt sich beispielsweise mit
winget install --help
aufrufen.
Welche Befehle tatsächlich vorhanden sind, kann von der installierten Winget-Version abhängen.
search – Pakete suchen
Mit search durchsuchen Sie die konfigurierten Winget-Paketquellen.
Eine einfache Suche nach Firefox sieht beispielsweise so aus:
winget search firefox
Winget liefert passende Pakete einschließlich Name, ID, Version und Quelle zurück.
Besonders empfehlenswert ist die Verwendung der eindeutigen Paket-ID:
winget search --id Mozilla.Firefox
Mit --exact beziehungsweise -e lässt sich eine exakte Übereinstimmung verlangen:
winget search --id Mozilla.Firefox --exact
Gerade in Skripten sollte möglichst mit eindeutigen Paket-IDs gearbeitet werden.
show – Informationen über ein Paket anzeigen
Bevor eine Anwendung installiert wird, können deren Paketinformationen abgefragt werden:
winget show Mozilla.Firefox
Besser ist wiederum die eindeutige ID:
winget show --id Mozilla.Firefox --exact
Je nach Manifest erhalten Sie Informationen beispielsweise über:
- Hersteller
- Version
- Beschreibung
- Homepage
- Lizenz
- Installer
- Architektur
- Downloadquelle
- Tags
show eignet sich daher hervorragend, um ein Paket vor der Installation genauer zu untersuchen.
install – Software installieren
install dürfte der bekannteste Winget-Befehl sein.
Beispiel:
winget install --id Mozilla.Firefox --exact
Winget sucht das Paket, ermittelt den passenden Installer, lädt ihn herunter, überprüft dessen Hash und startet anschließend die Installation.
Für automatisierte Installationen sind häufig zusätzliche Parameter interessant:
winget install --id Mozilla.Firefox --exact --silent
Oder:
winget install --id Mozilla.Firefox --exact --accept-package-agreements --accept-source-agreements
Auch mehrere Pakete können mit aktuellen Winget-Versionen in einem Aufruf angegeben werden. Welche Syntax und Optionen Ihre Version unterstützt, zeigt:
winget install --help
list – Installierte Software anzeigen
Mit
winget list
erhalten Sie eine Übersicht der von Winget erkannten installierten Anwendungen.
Nach einer bestimmten Anwendung kann ebenfalls gesucht werden:
winget list firefox
Oder eindeutig über die Paket-ID:
winget list --id Mozilla.Firefox --exact
list ist besonders für Bestandsaufnahmen und administrative Skripte interessant.
upgrade – Programme aktualisieren
Welche Aktualisierungen verfügbar sind, zeigt:
winget upgrade
Eine einzelne Anwendung lässt sich beispielsweise mit
winget upgrade --id Mozilla.Firefox --exact
aktualisieren.
Besonders praktisch ist:
winget upgrade --all
Damit versucht Winget, alle Anwendungen zu aktualisieren, für die ein geeignetes Update gefunden wurde.
Für weitgehend unbeaufsichtigte Abläufe können je nach Paketen weitere Optionen ergänzt werden:
winget upgrade --all --silent
Vor einem unternehmensweiten automatischen Einsatz sollte jedoch getestet werden, wie sich die jeweiligen Installer verhalten.
uninstall – Programme entfernen
Winget kann Anwendungen nicht nur installieren, sondern auch deinstallieren:
winget uninstall --id Mozilla.Firefox --exact
Alternativ kann nach dem Namen gearbeitet werden:
winget uninstall "Mozilla Firefox"
Die eindeutige Paket-ID ist insbesondere in Skripten vorzuziehen.
export – Softwarebestand exportieren
Winget kann erkannte installierte Anwendungen in eine JSON-Datei exportieren:
winget export -o winget-apps.json
Die erzeugte Datei enthält Paketinformationen und die zugehörigen Quellen. Winget versucht dabei, installierte Anwendungen mit Paketen aus den verfügbaren Sources abzugleichen. Nicht jede lokal installierte Anwendung kann zwangsläufig einem verfügbaren Winget-Paket zugeordnet werden.
Damit eignet sich export beispielsweise für:
- Rechnerwechsel
- Neuinstallationen
- Standardarbeitsplätze
- Entwickler-PCs
- Dokumentation
- Softwareinventarisierung
import – Softwarelisten wieder installieren
Das Gegenstück zu export ist import.
Eine zuvor exportierte Softwareliste lässt sich beispielsweise mit
winget import -i winget-apps.json
wieder einlesen.
Winget versucht anschließend, die in der Datei aufgeführten Pakete zu installieren.
Damit entsteht ein einfacher Mechanismus:
Alter PC ↓ winget export ↓ JSON-Datei ↓ Neuer PC ↓ winget import
Gerade beim Neuaufsetzen eines Rechners kann dies viel Arbeit sparen.
download – Installer herunterladen
Winget muss Software nicht unmittelbar installieren.
Mit download lässt sich zunächst nur der Installer herunterladen:
winget download --id Microsoft.PowerToys --exact
Standardmäßig wird der passende Installer in den Download-Ordner des Benutzers geladen. Mit --download-directory lässt sich ein anderes Ziel angeben. Darüber hinaus können beispielsweise Version, Architektur, Plattform und Installer-Typ ausgewählt werden.
Beispiel:
winget download --id Microsoft.PowerToys --architecture x64 --download-directory C:\Winget
Das ist besonders interessant für Administratoren, die Installationsdateien zunächst prüfen oder für Offline-Szenarien vorbereiten möchten.
source – Paketquellen verwalten
Winget kann mehrere Paketquellen verwenden.
Vorhandene Quellen anzeigen:
winget source list
Quellen aktualisieren:
winget source update
Eine neue Quelle lässt sich grundsätzlich über source add hinzufügen:
winget source add --name MeineQuelle --arg https://server.example
Eine Quelle entfernen:
winget source remove MeineQuelle
Bei Problemen können die Quellen außerdem zurückgesetzt werden:
winget source reset --force
Die Source-Verwaltung wird später in einem eigenen Teil unserer Serie ausführlich behandelt.
pin – Updates gezielt kontrollieren
Nicht jede Anwendung soll automatisch auf die neueste Version aktualisiert werden.
Genau dafür besitzt Winget die Pin-Funktion.
Vorhandene Pins anzeigen:
winget pin list
Ein Paket kann beispielsweise mit
winget pin add --id <Paket-ID>
gepinnt werden.
Pins lassen sich anschließend wieder entfernen:
winget pin remove --id <Paket-ID>
Damit können Administratoren verhindern beziehungsweise steuern, dass bestimmte Anwendungen bei normalen Upgrade-Vorgängen ungewollt auf eine andere Version wechseln.
settings – Winget konfigurieren
Mit
winget settings
öffnet Winget seine Konfigurationsdatei im standardmäßig zugeordneten JSON-Editor.
Hier können verschiedene Einstellungen des Clients angepasst werden. Aktuelle Winget-Versionen kennen darüber hinaus Unterbefehle wie export, set und reset für Einstellungen.
Die vollständige Konfiguration behandeln wir später in einem eigenen Artikel.
features – Funktionen überprüfen
Mit
winget features
lässt sich der Status experimenteller Funktionen anzeigen. Microsoft führt neue Möglichkeiten teilweise zunächst als experimentelle Features ein. Der Befehl hilft daher insbesondere Administratoren und Testern dabei festzustellen, welche Funktionen im eingesetzten Client verfügbar sind.
hash – SHA-256-Hash erzeugen
hash ist vor allem für Paketautoren interessant.
Beispiel:
winget hash installer.exe
Winget berechnet damit den SHA-256-Hash einer Installationsdatei. Dieser Wert spielt bei Manifesten eine wichtige Rolle, weil Winget damit die Integrität eines heruntergeladenen Installers überprüfen kann.
Für normale Softwareinstallationen müssen Benutzer diesen Hash nicht selbst erzeugen.
validate – Manifeste überprüfen
Auch validate richtet sich hauptsächlich an Paketautoren.
Ein Manifest kann beispielsweise mit
winget validate --manifest .\manifest.yaml
überprüft werden.
Der Befehl validiert ein Manifest für die Einreichung in das Microsoft Community Package Manifest Repository.
Damit lassen sich viele Fehler erkennen, bevor ein Paket zur Veröffentlichung eingereicht wird.
complete – Kommandozeilen-Vervollständigung
Der Befehl complete unterstützt die Kommandozeilen-Vervollständigung von Winget.
Für den normalen Anwender ist er weniger als interaktiver Alltagsbefehl gedacht. Vielmehr kann er von Shells beziehungsweise Completion-Mechanismen verwendet werden, um passende Argumente und Werte zu ermitteln.
Das erleichtert insbesondere die komfortable Verwendung von Winget in PowerShell.
Welche Optionen Ihre Winget-Version unterstützt, erfahren Sie mit:
winget complete --help
configure – Windows in einen gewünschten Zustand bringen
Mit configure geht Winget weit über die klassische Paketinstallation hinaus.
Eine Winget-Konfigurationsdatei kann nicht nur benötigte Software, sondern auch weitere Einstellungen eines Systems beschreiben. Microsoft setzt dabei auf YAML-formatierte Konfigurationsdateien und PowerShell Desired State Configuration (DSC).
Eine Konfiguration kann beispielsweise mit
winget configure -f .\configuration.dsc.yaml
angewendet werden.
Damit lassen sich reproduzierbare Windows-Umgebungen erstellen – beispielsweise für Entwicklerarbeitsplätze.
Wichtig: Eine fremde Konfigurationsdatei sollte niemals ungeprüft ausgeführt werden. Microsoft empfiehlt ausdrücklich, Inhalt und Vertrauenswürdigkeit der verwendeten Ressourcen vorher zu überprüfen.
configure test – Soll- und Ist-Zustand vergleichen
Besonders interessant ist:
winget configure test -f .\configuration.dsc.yaml
Damit wird nicht einfach die Konfiguration ausgeführt. Stattdessen überprüft Winget, ob der aktuelle Zustand des Rechners dem in der Konfigurationsdatei definierten gewünschten Zustand entspricht. (Microsoft Learn)
Das ist beispielsweise für standardisierte Entwicklerrechner oder administrierte Systeme nützlich.
configure validate – Konfiguration prüfen
Bevor eine Konfigurationsdatei eingesetzt wird, kann sie validiert werden:
winget configure validate -f .\configuration.dsc.yaml
Dabei prüft Winget die Konfigurationsdatei auf ihre Gültigkeit. configure validate ist ausdrücklich von winget validate zu unterscheiden: Der normale validate-Befehl überprüft Paketmanifeste, während configure validate Winget-Konfigurationsdateien validiert.
Diese Unterscheidung ist wichtig.
Welche Befehle braucht man im Alltag?
Für die normale Softwareverwaltung reichen zunächst wenige Befehle:
winget search <Programm> winget show --id <Paket-ID> winget install --id <Paket-ID> --exact winget list winget upgrade winget upgrade --all winget uninstall --id <Paket-ID> --exact
Administratoren werden zusätzlich insbesondere mit folgenden Befehlen arbeiten:
winget export winget import winget download winget source winget pin winget settings winget configure
Paketautoren benötigen darüber hinaus:
winget hash winget validate
Damit zeigt sich, dass Winget wesentlich mehr ist als ein einfacher Installer.
Praktischer Tipp: Die integrierte Hilfe nutzen
Winget entwickelt sich kontinuierlich weiter. Deshalb ist die integrierte Hilfe eine der wichtigsten Informationsquellen.
Allgemeine Hilfe:
winget --help
Hilfe zu install:
winget install --help
Hilfe zu upgrade:
winget upgrade --help
Hilfe zu configure:
winget configure --help
Damit sehen Sie genau die Befehle und Optionen, die von der tatsächlich installierten Winget-Version unterstützt werden.
Die Winget-CLI deckt nahezu den gesamten Lebenszyklus einer Windows-Anwendung ab. Mit search und show werden Pakete gefunden und geprüft, install, upgrade und uninstall übernehmen die eigentliche Softwareverwaltung und list liefert den lokalen Bestand.
Mit export und import lassen sich Softwarelisten zwischen Rechnern übertragen, während download Installationsdateien für weitere Verarbeitung bereitstellt. source verwaltet Paketquellen und pin ermöglicht eine gezielte Kontrolle von Updates.
Die Befehle hash und validate richten sich insbesondere an Paketautoren. Mit settings und features lässt sich dagegen der Winget-Client selbst untersuchen und konfigurieren.
Besonders mächtig wird Winget schließlich mit configure: Hier entwickelt sich der Paketmanager zu einem Werkzeug für reproduzierbare Windows-Systeme und Desired State Configuration.
Damit kennen wir nun die Werkzeugkiste. In den nächsten Teilen der Serie nehmen wir die wichtigsten Bereiche einzeln auseinander und arbeiten uns von einfachen Softwareinstallationen bis zur professionellen Automatisierung vor.