Winget

Programme Updaten und Installieren auf Kommandozeile.

MICROSOFT:
WinGet ist ein Befehlszeilentool, mit dem Benutzer Anwendungen auf Computern unter Windows 10, Windows 11 und Windows Server 2025 ermitteln, installieren, aktualisieren, entfernen und konfigurieren können. Dieses Tool ist die Clientschnittstelle für den Windows-Paket-Manager-Dienst.

Damit hat man endlich auf Windows ein Tool, das in Teilen wie die Paket manager von Linux eine ganze Menge von Programmen installieren und aktualisieren von Programmen.
Vorteile sind hier klar auf der Hand:

  • Ich muss nicht im Internet suchen und installiere eventuell das falsche Programm
  • Ich kann meine installierten Programme zum grössten tei aktuell halten. Das verhindert Fehler und trägt u.A. auch zur Sicherheit bei.

Anleitungen zu Winget gibt es in Massen -auch sehr ausführlich.

Es ist viel Info unterwegs und es dauert seine Zeit, bis man das Ganze sauber zum Laufen bekommt.
Deshalb hier eine Schnellstart Anleitung aus der Praxis, die auf die Details verzichtet - diese könnt Ihr dann in den genauen Dokus nachlesen

1. Bevor man beginnt

TIPP:
Da die meisten Programme als Administrator installiert werden , empfehle ich, die Kommandozeile (cmd oder powershell) gleich als Administrator zu starten.
Ihr erspart Euch die UAC Abfrage bei jedem einzelnen Programm.

Wenn das Ganze für mehrere Programme in einer Batch laufen soll, kann man das in der Batch direkt erzwingen, indem man ma Anfang der Batch die hier am Anfanh die UAC Anforderung einbaut.
(siehe Batch Cheat-Sheet)

Repositorys aktualisieren: Bevor man irgendwas tut, sollte man die Kataloge aktualisieren:

winget update

Auflisten von installierten Programmen geht so:

winget list

2. Programme finden und Installieren

In der repository suchen (Beispiel vlc):

winget find vlc

Das Ergebnis ist bei mir dann:

Name             ID                    Version    Übereinstimmung Quelle
-------------------------------------------------------------------------
VLC              XPDM1ZW6815MQM        Unknown                    msstore
VLC UWP          9NBLGGH4VVNH          Unknown                    msstore
VLC media player VideoLAN.VLC          3.0.21     Moniker: vlc    winget
Screenbox        Starpine.Screenbox    0.15.0     Tag: vlc        winget
Streamlink       Streamlink.Streamlink 7.1.3-1    Tag: vlc        winget
wcap             mmozeiko.wcap         2024.10.18 Tag: vlc        winget

Hier sieht man, dass unter Umständen mehrere Ergebnisse herauskommen.
Hier muss man das richtige Paket heraussuchen - das ist in diesem Fall VideoLAN.VLC

Das kann man dann mit dem folgenden Befehl installieren:

winget install VideoLAN.VLC

Danach startet die Installation automatisch.

2.1. Zusätzliche nützliche Flags:

  • scope:
    • --scope user installiert das Programm nur für den aktuellen User
    • --scope machine installiert es auf dem Rechner für alle User

3. Updates

Updates gehen mit dem Befehl upgrade
Wenn man nur ein bestimmtes Programm aktualisieren möchte, kann man dahinter den Namen des Paketes angeben. Für Alles schreibt man --all
Komplett kann ich folgenden Befehl empfehlen:

winget.exe upgrade --all --include-unknown -h
  • --all: Alle zu aktualisierenden Programme updaten
  • --include.unknown: Wenn die Versionsnummern nicht verglichen werden können, sicherheitshalber mit der neusten Version aktualisieren
  • -h möglichst ohne grosse Nachfragen

3.1. Ergänzungen und mögliche Probleme

Manche Programme sollen nicht aktualisiert werden. Beispielsweise, wenn ihr eine Linzenz für Version 2 habt, aber die Version 3 schon publik ist. In dem Fall würde winget eine unlizensierte Version einspielen.
Man kann es durch den Befehl PINverhindern.
winget pin add powertoysverhindert das Update von Powertoys.
winget pin rempve powertoyshebt die Blockade wieder auf.
Es gibt hier noch andere Möglichkeiten, wie die Einschränkung auf Versionen u.Ä. Weiteres im GitHub](https://github.com/MicrosoftDocs/windows-dev-docs/blob/docs/hub/package-manager/winget/pinning.md))

Wenn das Update nicht gelingt, weil Nachrichten bzgl. falscher Version o.Ä kommen, liegt das oft daran, dass das Programm manuell installiert wurde. Winget erkennt das Programm, kann aber die aktuelle Version nicht so ersetzen, wie sie installiert wurde.
Es hilft in diesem Fall, das Programm zu deinstallieren und mit Winget neu aufzuspielen.

Einige Programme haben die Möglichkeit, sich für den Benutzer oder die Maschine (alle Benutzer) zu installieren.
Da hilft eine Variation des Flags --scope user oder --scope machine.
Ich halte es so, dass ich alle Programme möglichst mit --scope machineinstalliere und als admin update.
Schliesslich sollen die Programme auch meinem Admin und Weiteren zur Verfügung stehen.

3.2. Auto-Update Batch

Hier meine batch zum auomatischen Upgrade aller Programme.
Sie verlangt UAC (Admin), damit wird nicht bei jeder Installation nach Admin-Rechnten gefragt

@echo off
:: BatchGotAdmin
::-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"="
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
::--------------------------------------
winget.exe upgrade --all -h
winget.exe upgrade --all --include-unknown -h

:: === Falls jemand die erstellten Links löschen will ======
::   Achtung - alle Links uaf dem public Desktop verschwinden dann
REM del C:\Users\Public\Desktop\*.lnk /q

4. ANHANG

4.1. Installation von Winget

4.1.1. Winget auf Windows 11

In Windows 11 ist Winget schon an Bord - da braucht man quasi nichts zu machen.

  • In Windows Server bis 2019 habe ich es nicht zum Laufen bekommen
  • . Dazu ein eigenes Kapitel:

4.1.2. WinGet auf Windows 10

Windows 10 hat Anfangs kein Winget. Es ist allerdings tricky das Ganze zu Installieren

Es gibt verschiedene Theorien und Anleitungen, die je nach Version mal gehen, mal nicht.
Man könnte es aus dem Playstore installieren, oder direkt vom Github. Oft klapp es aber nicht und ich habe da auch keine Geduld dazu.

Zum Glück gibt es da die Jungs von UniGetUI, die ein schönes Tool entwickelt haben, mit dem man Winget auch grafisch bedienen kann. Gerne mal anschauen.
Das ist nicht ganz für diesen Artikel - ABER:
SCHNELLSTART: Die Installation von UniGetUI hat alles eingebaut, was man braucht. Das heisst, Ihr installiert UniGet und WinGet und alle Abhängigkeiten sind da. Danke für die Arbeit und Aktualisierung der Routinen.

Wenn Ihr dann auf Kommandozeile arbeiten wollt - kann man das Tool auch wieder entfernen.

4.2. Meine Standard Programme auf neuen Rechnern

#APPS
@echo off

echo START
REM == Editoren und Text Tools ==
winget install Microsoft.VisualStudioCode
winget install Notepad++.Notepad++
winget install Obsidian.Obsidian --scope machine
winget install AstroComma.AstroGrep

REM == Browser ==
winget install Google.Chrome.EXE
winget install Mozilla.Firefox

REM == File Tools ==
winget install 7zip.7zip
winget install Synology.DriveClient
winget install TGRMNSoftware.BulkRenameUtility
winget install voidtools.Everything

REM == Media Tools ==
winget install Greenshot.Greenshot
winget install LibreCAD.LibreCAD
winget install FastStone.Viewer
winget install OBSProject.OBSStudio

REM == Office und Dokumente ==
winget install calibre.calibre

winget install AutoHotkey.AutoHotkey
winget install Balena.Etcher
winget install Citrix.Workspace
winget install RealVNC.VNCViewer
winget install SumatraPDF.SumatraPDF
winget install VideoLAN.VLC
winget install WinSCP.WinSCP
winget install WireGuard.WireGuard
winget install rufus.rufus


echo Fertig
pause
x