WinGet

Worüber die Linux Community seit Jahrzehnten bei Windows lacht und was auch Windows-Nachbauprojekte wie ReactOS hinbekommen haben, ist das Fehlen eines Anwendungs-Installationsprogramms, das alle möglichen Apps aus einem Repository installiert.
Oder anders gesagt: Windows hatte nie ein apt install.

Und jetzt, 20 Jahre zu spät, kommt winget


Vorgeschichte

Das Thema Installation oder Setup ist historisch bedingt unter Windows (und früher auch unter DOS), Sache des Anwendungsentwicklers gewesen.
Ganz anders ist es heute in unixoiden Systemen, denn sowohl Linux, BSD, Android und MacOS nutzen die für sie typischen “Paket-Manager”, die eine Anwendung von einem definierten Ort herunterladen und alle Dateien an den korrekten Stellen integrieren.

Unter Windows (und DOS) hingegen hatte jeder Hersteller seinen eigenen Installer entwickelt, der häufig mehr Probleme verursacht als gelöst hatte. Da wurden wild DLLs in Windows\System[32] überschrieben nur damit die eigene Anwendung eine anders-aussehende “coolere” Titelleiste bekam.

Am Ende bildeten sich ein Hand voll “Installer” Hersteller, die den Vorgang der Installation durch eigene proprietäre Scriptsprachen abbildeten.

Microsoft versuchte das Chaos noch durch Standards wie dem MSI Format (Microsoft Installer) und später mit dem Windows-Store zu verhindern, doch bis heute schreiben die Hersteller eigene Setups, um den Kunden-PC mit möglichst viel Werbung und andere Blödheiten zu infizieren.

Nun, man darf dabei nicht vergessen, dass große Firmen ihre genutzte Fremdsoftware immer selbst anpassen wollen und forderten die “Eigenständigkeit” dafür von Microsoft ein. Für den Endanwender zu Hause blieb natürlich das reine Chaos übrig, denn der hatte kein Active Directory und keine eigene Software-Administrationsabteilung, die seinen Rechner korrekt aufsetzte.

Lösung

Es ist doch eigentlich einfach:

  • Man lädt seine Binärdateien in ein definiertes Verzeichnis auf einen Webserver
  • Dann schreibt man ein Script, das nach dem Herunterladen der Binärdateien alles an eine korrekte Stelle im Dateisystem schreibt und dann noch ein paar Konfigurationsdateien anpasst.
  • Und am Ende erstellt man ein paar fette XML (JSON oder YAML) Dateien auf einen zentralen öffentlichen Webserver, wo jede Software mit seinen Dateien und Scripten verzeichnet ist.
  • Jetzt braucht man nur noch ein kleines Programm, das die Softwareliste herunterlädt, gefolgt von den Binärdateien und dann das Setup-Script ausführt.
    Fertig ist die allumfassende Softwareverwaltung.

apt, rpm, apk und wie sie alle heißen machen das schon seit vielen vielen Jahren und jetzt rüstet Microsoft endlich mit winget nach, was im Endeffekt auch nichts anderes ist, als ein Downloader und Installer-Starter

Anwendung

Microsoft plant winget in Zukunft direkt mit Windows auszuliefern, vermutlich im frisch angekündigten[] Windows 11](https://de.wikipedia.org/wiki/Microsoft_Windows_11). Heute müssen wir es manuell installieren, damit alles andere “automatisch” installiert werden kann.

Unter github.com/microsoft/winget-cli/releases findet man beim neuesten Release eine msixbundle Datei, die man herunterlädt und ausführt. Dann startet die Installation von winget und am Ende kann man sofort seine Konsole (cmd.exe) öffnen und winget eintippen.

  • winget search listet die gesamte Software auf, die man per winget installieren kann. Natürlich kann man auch einen Token anfügen, der vorhanden sein muss, wie winget search visualstudio
  • winget list zeigt, was bereits alles am PC installiert ist, und ob winget eine neuere Version online bereit hätte.
  • winget install APP-ID leitet dann den Download und die Installation ein. Die APP-ID setzt sich in der Regel aus
    Hersteller + "." + Produkt [ + "." + Untertitel ]
    zusammen. Ein winget install microsoft.openjdk.11 installiert dann z.B. die neuesten Version von OpenJDK.11 (bei mir aktuell in Version 11.0.11.9)
  • winget upgrade APP-ID leitet die Installation einer neueren Version eines bereits installierten Programms ein. Ich konnte z.B. per winget upgrade CPUID.CPU-Z meine aktuelle CPU-Z Version v1.92 auf v1.96 aktuatlisieren.
  • winget uninstall APP-ID führt einfach die Deinstallations-Routine eines Softwarepaketes aus.

Fazit

Warum erst jetzt, Microsoft? Verdammt noch mal!

Dieses Feature hätte schon vor 15 Jahren mit Windows Vista an die breiten Massen verteilt werden können und müssen.
Denn das größte Problem mit Windows ist, dass jeder sich seine Software per Suche im Internet zusammenladen muss und nicht selten landet man bei einem bösen Abzocker, der seine eigene “FireFox-Setup.Exe” zum Download anbietet, die dann viele weitere Holzpferdchen mitinstalliert.

Ein “geprüftes” Repository, wo sich alle seriösen Hersteller eintragen können, und ein einziges Setup-Tool, das alles installieren kann, ist doch DIE Lösung für viele Probleme.

Ich verstehe nicht, wie es so lange dauern konnte, bis so eine essentielle Funktion endlich bereitgestellt wird.

Wie auch immer … das Tool ist eine meiner großen Hoffnungen. Und ich bin schon sehr gespannt, was sich mein älteres Ich in 10 Jahren denken wird, wenn es diesen Text wiederfindet.
Wird dann winget die ganze Windows-Welt erobert haben … oder blieb es eine bedauernswerte Eintagsfliege, die nur mir verdammt gut gefallen hat?


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!

Meine Dokus über:
 
Externe Links zu: