Einleitung
Ein Windows-PC wird über Jahre hinweg eingerichtet. Browser, Editoren, Entwicklerwerkzeuge, Multimedia-Programme, Administrationswerkzeuge und zahlreiche weitere Anwendungen kommen nach und nach hinzu.
Steht irgendwann ein neuer Rechner oder eine Neuinstallation von Windows an, beginnt häufig die Suche:
Welche Programme hatte ich eigentlich installiert?
Anschließend werden Hersteller-Webseiten aufgerufen, Installationsdateien heruntergeladen und Programme einzeln eingerichtet.
Winget bietet dafür einen deutlich komfortableren Ansatz.
Mit:
winget export
kann eine Liste der erkannten installierten Anwendungen erstellt werden.
Mit:
winget import
kann diese Liste anschließend wieder eingelesen werden.
Microsoft sieht die Kombination aus export und import ausdrücklich für die Batchinstallation von Anwendungen und beispielsweise zur Wiederherstellung einer Entwicklungsumgebung vor.
Damit entsteht ein einfacher Migrationsprozess:
Alter PC ↓ winget export ↓ JSON-Datei sichern ↓ Windows neu installieren / neuer PC ↓ Winget bereitstellen ↓ winget import ↓ Programme automatisch installieren
Doch ganz so einfach wie ein vollständiges System-Backup ist es nicht. Deshalb schauen wir uns die Funktion genauer an.
Einen Winget-Export erstellen
Die grundlegende Syntax lautet:
winget export -o <Datei>
Beispielsweise:
winget export -o C:\Backup\winget-apps.json
Winget untersucht die installierten Anwendungen und versucht, diese Paketen aus den aktuell verfügbaren Paketquellen zuzuordnen.
Das Ergebnis wird als JSON-Datei gespeichert.
Ein einfaches Beispiel wäre:
winget export -o winget-apps.json
Die Datei wird dann im aktuellen Arbeitsverzeichnis erzeugt.
Was wird beim Export eigentlich gesichert?
Diese Frage ist wichtig.
Winget erstellt kein Abbild der installierten Programme.
Es werden also nicht die eigentlichen EXE-, MSI- oder MSIX-Dateien in die JSON-Datei kopiert.
Stattdessen speichert Winget Informationen darüber, welche Pakete später erneut aus den jeweiligen Paketquellen bezogen werden sollen.
Vereinfacht gesagt enthält die Datei:
Installierte Anwendung
↓
Winget findet passendes Paket
↓
Paket-ID wird gespeichert
↓
Quelle wird gespeichert
↓
beim Import erneut herunterladen
Die JSON-Datei ist deshalb normalerweise sehr klein.
Winget kann nicht jedes Programm exportieren
Hier liegt eine der wichtigsten Einschränkungen.
Beim Export versucht Winget, installierte Anwendungen mit Paketen aus den verfügbaren Sources abzugleichen. Gelingt diese Zuordnung nicht, gibt winget export eine Warnung aus. Der Abgleich basiert unter anderem auf den Manifest-Metadaten und den Informationen, die Windows unter „Installierte Apps“ beziehungsweise den klassischen Add/Remove-Programs-Daten kennt.
Das bedeutet:
Eine auf dem Rechner vorhandene Anwendung muss nicht zwangsläufig im Export landen.
Problematisch können beispielsweise sein:
- selbst entwickelte Anwendungen
- interne Fachverfahren
- ältere Programme
- portable Anwendungen
- manuell kopierte Programme
- Software ohne passendes Winget-Paket
- speziell paketierte Unternehmenssoftware
Die Meldungen während des Exports sollten deshalb aufmerksam kontrolliert werden.
Export mit Versionsnummern
Standardmäßig geht es beim Export primär darum, die Anwendungen später wieder installieren zu können.
Soll zusätzlich die aktuell installierte Version berücksichtigt werden, steht die Option:
--include-versions
zur Verfügung.
Beispiel:
winget export -o winget-apps.json --include-versions
Damit werden Versionsinformationen in die Exportdatei aufgenommen. Ohne diese Option verwendet ein späterer Import grundsätzlich die aktuell verfügbare Version.
Das ist ein entscheidender Unterschied.
Wann sollte man Versionen exportieren?
Für einen privaten Rechner ist häufig die neueste verfügbare Version erwünscht.
Dann genügt:
winget export -o winget-apps.json
Für reproduzierbare Entwicklungs-, Test- oder Unternehmensumgebungen kann dagegen sinnvoll sein:
winget export -o winget-apps.json --include-versions
Damit wird dokumentiert, welche Version zum Zeitpunkt des Exports installiert war.
Allerdings bedeutet dies nicht automatisch, dass diese Version später noch verfügbar sein wird.
Eine Paketquelle kann ältere Versionen entfernen oder ein Hersteller kann den zugehörigen Installer nicht mehr bereitstellen.
Der Export einer Versionsnummer ist deshalb keine Archivierung des Installationsmediums.
Export auf eine bestimmte Source beschränken
Mit:
--source
beziehungsweise:
-s
kann der Export auf eine bestimmte Paketquelle beschränkt werden.
Beispielsweise:
winget export -o winget-community.json --source winget
Das kann insbesondere bei mehreren Unternehmens- oder Drittanbieterquellen hilfreich sein.
Die JSON-Datei verstehen
Winget verwendet JSON als Austauschformat.
Eine stark vereinfachte Exportdatei könnte beispielsweise folgendermaßen aussehen:
{
"Sources": [
{
"Packages": [
{
"PackageIdentifier": "Mozilla.Firefox"
},
{
"PackageIdentifier": "Git.Git"
},
{
"PackageIdentifier": "Microsoft.VisualStudioCode"
}
]
}
]
}
Die tatsächliche Datei enthält zusätzliche Informationen zur jeweiligen Source.
Die wichtigsten Bestandteile des Schemas sind Sources, Packages, PackageIdentifier und optional Version.
Sources
Der Bereich:
"Sources"
beschreibt die Paketquellen, aus denen die betreffenden Anwendungen stammen.
Das ist wichtig, weil ein Paket nicht zwangsläufig aus dem öffentlichen Winget-Community-Repository stammen muss.
Mögliche Quellen können beispielsweise sein:
winget msstore Unternehmensrepository eigene Paketquelle
Aktuelle Winget-Versionen führen standardmäßig unter anderem msstore, winget und winget-font; weitere Sources können administrativ ergänzt werden.
Packages
Unter:
"Packages"
befindet sich die eigentliche Sammlung der zu installierenden Pakete.
Beispielsweise:
{
"PackageIdentifier": "Mozilla.Firefox"
}
Die Paket-ID kennen wir bereits aus den vorherigen Teilen der Serie.
Sie ermöglicht die eindeutige Identifizierung einer Anwendung.
Version
Wurde beim Export:
--include-versions
verwendet, kann zusätzlich eine Versionsinformation vorhanden sein.
Schematisch:
{
"PackageIdentifier": "Hersteller.Anwendung",
"Version": "1.2.3"
}
Damit kann der Import versuchen, genau diese Version zu installieren.
JSON-Datei bearbeiten
Ein großer Vorteil des offenen JSON-Formats besteht darin, dass die Datei vor einer Migration kontrolliert und bearbeitet werden kann.
Microsoft weist ausdrücklich darauf hin, dass nach dem Export Anwendungen aus der JSON-Datei entfernt werden können, die später nicht erneut installiert werden sollen.
Das ist ausgesprochen praktisch.
Angenommen, auf dem alten PC befanden sich 40 Programme, aber nur 25 davon werden noch benötigt.
Dann können unerwünschte Pakete vor dem Import entfernt werden.
Aus einer historisch gewachsenen Installation wird so gleichzeitig eine Gelegenheit zum Aufräumen.
Exportdatei prüfen
Vor einer Migration empfiehlt sich deshalb:
Export erstellen
↓
Warnungen kontrollieren
↓
JSON öffnen
↓
Paketliste prüfen
↓
unnötige Programme entfernen
↓
wichtige fehlende Programme dokumentieren
↓
Datei sichern
Damit verhindert man, dass Altlasten automatisch auf den neuen Rechner übernommen werden.
Software wieder importieren
Auf dem neuen Rechner wird anschließend:
winget import -i winget-apps.json
ausgeführt.
Die Langform lautet:
winget import --import-file winget-apps.json
Winget liest die Datei ein und versucht, die darin aufgeführten Anwendungen nacheinander zu installieren.
Was passiert beim Import?
Vereinfacht läuft der Vorgang folgendermaßen ab:
JSON-Datei lesen
↓
Sources auswerten
↓
Paket-ID suchen
↓
Version ermitteln
↓
Installer herunterladen
↓
Integrität prüfen
↓
Anwendung installieren
↓
nächstes Paket
Die Pakete werden dabei seriell verarbeitet. Ist eine Anwendung nicht verfügbar oder bereits vorhanden, informiert Winget darüber.
Paket- und Source-Vereinbarungen akzeptieren
Bei einem größeren automatisierten Import möchte man möglicherweise nicht bei jeder notwendigen Vereinbarung interaktiv eingreifen.
Dafür stehen:
--accept-package-agreements
und:
--accept-source-agreements
zur Verfügung.
Beispiel:
winget import -i winget-apps.json `
--accept-package-agreements `
--accept-source-agreements
Für unbeaufsichtigte Abläufe gibt es außerdem:
--disable-interactivity
Beispiel:
winget import -i winget-apps.json `
--accept-package-agreements `
--accept-source-agreements `
--disable-interactivity
Diese Optionen sind offiziell für winget import vorgesehen.
Gerade in Unternehmen sollte die automatische Akzeptanz von Lizenzbedingungen allerdings organisatorisch geklärt sein.
Nicht verfügbare Programme überspringen
Eine Exportdatei kann Pakete enthalten, die später nicht mehr verfügbar sind.
Dafür gibt es:
--ignore-unavailable
Beispiel:
winget import -i winget-apps.json --ignore-unavailable
Winget unterdrückt damit Fehler aufgrund nicht verfügbarer angeforderter Anwendungen und kann den übrigen Import fortsetzen.
Das ist besonders bei älteren Exportdateien nützlich.
Gespeicherte Versionsnummern ignorieren
Vielleicht wurde die Exportdatei mit:
--include-versions
erstellt, beim neuen Rechner sollen aber bewusst die aktuellsten Versionen installiert werden.
Dann kann:
--ignore-versions
verwendet werden.
Beispiel:
winget import -i winget-apps.json --ignore-versions
Winget ignoriert dann die in der JSON-Datei hinterlegten Versionsangaben und verwendet die aktuell verfügbaren Versionen.
Bereits installierte Programme nicht aktualisieren
Mit:
--no-upgrade
kann verhindert werden, dass bereits installierte Anwendungen während des Imports aktualisiert werden.
Beispiel:
winget import -i winget-apps.json --no-upgrade
Ist eine Anwendung bereits vorhanden, wird deren Upgrade übersprungen.
Das kann beispielsweise sinnvoll sein, wenn ein Import auf einem bereits teilweise eingerichteten Rechner durchgeführt wird.
Einen neuen PC mit Winget einrichten
Damit kommen wir zu einem der interessantesten Einsatzgebiete.
Angenommen, ein bestehender Arbeitsplatz soll ersetzt werden.
Auf dem alten Rechner wird zunächst ein Export erzeugt:
winget export -o D:\Migration\winget-apps.json
Optional inklusive Versionen:
winget export -o D:\Migration\winget-apps.json --include-versions
Anschließend wird die Datei auf einem sicheren Datenträger oder Netzlaufwerk abgelegt.
Auf dem neuen Rechner
Nach der Windows-Installation wird zunächst geprüft:
winget --version
Anschließend sollten die Quellen aktualisiert werden:
winget source update
Danach erfolgt der Import:
winget import -i D:\Migration\winget-apps.json
Winget beginnt nun, die in der Datei aufgeführten Anwendungen wieder bereitzustellen.
Aus mehreren Stunden manueller Softwareinstallation kann so ein weitgehend automatisierter Prozess werden.
Beispiel: Entwickler-PC migrieren
Gerade Entwicklerrechner profitieren von dieser Funktion.
Ein System könnte beispielsweise enthalten:
Visual Studio Code Git PowerShell Python Node.js Docker Desktop 7-Zip Firefox PowerToys Windows Terminal
Anstatt alle Anwendungen auf einem neuen PC einzeln zusammenzusuchen, wird die Softwareliste exportiert und anschließend wieder importiert.
Microsoft nennt das Wiederherstellen beziehungsweise Teilen einer Entwicklungsumgebung ausdrücklich als typischen Anwendungsfall für Export und Import.
Winget als Bestandteil einer Migration
Ein sinnvoller Migrationsprozess könnte folgendermaßen aussehen:
ALTER PC
─────────────────
Daten sichern
Browserdaten prüfen
Anwendungsbestand prüfen
Winget-Export erstellen
Spezialsoftware dokumentieren
Lizenzinformationen sichern
↓
NEUER PC
─────────────────
Windows installieren
Windows aktualisieren
Winget prüfen
Paketquellen einrichten
Winget-Import durchführen
Spezialsoftware installieren
Benutzerdaten zurückspielen
Konfiguration prüfen
Winget automatisiert dabei einen wichtigen Teil der Migration – aber nicht die gesamte Migration.
Ist Winget Export ein Backup?
Nein.
Dieser Punkt ist so wichtig, dass er ausdrücklich hervorgehoben werden sollte.
winget export
ist kein vollständiges Software-Backup.
Winget sichert insbesondere nicht automatisch:
- Installationsdateien
- Benutzerdaten
- Dokumente
- Programmkonfigurationen
- Registry-Einstellungen einer Anwendung
- Datenbanken
- Browserprofile
- Plug-ins
- Add-ons
- Lizenzschlüssel
- Zertifikate
- individuelle Anwendungseinstellungen
Gesichert wird im Wesentlichen die Information:
Diese Pakete sollen aus diesen Quellen wieder installiert werden.
Was passiert, wenn ein Installer verschwindet?
Angenommen, eine Anwendung war zum Zeitpunkt des Exports verfügbar.
Ein Jahr später:
- existiert der Hersteller nicht mehr,
- wurde die Download-Adresse entfernt,
- wurde das Paket aus der Source genommen,
- oder die gewünschte Version wird nicht mehr angeboten.
Dann kann der Import scheitern.
Die JSON-Datei enthält schließlich nicht den eigentlichen Installer.
Wer Installationsmedien langfristig archivieren muss, benötigt deshalb zusätzlich eine geeignete Software- beziehungsweise Paketablage.
Winget Export als Inventarliste
Trotz dieser Einschränkung ist der Export auch als einfache Dokumentation interessant.
Beispielsweise:
winget export -o "C:\Inventar\PC-01.json" --include-versions
Damit entsteht eine maschinenlesbare Liste vieler installierter Anwendungen.
Sie kann beispielsweise:
- archiviert,
- versioniert,
- verglichen,
- automatisiert ausgewertet
werden.
Allerdings sollte sie nicht mit einem vollständigen Software-Inventarisierungssystem verwechselt werden, da nicht jede installierte Anwendung zwingend einem Winget-Paket zugeordnet werden kann.
Export regelmäßig sichern
Für wichtige Systeme kann ein regelmäßiger Export sinnvoll sein.
Beispielsweise:
$Date = Get-Date -Format "yyyy-MM-dd"
winget export `
-o "D:\Backup\Winget-$Date.json" `
--include-versions
Dadurch entstehen Dateien wie:
Winget-2026-09-01.json Winget-2026-09-08.json Winget-2026-09-15.json
Damit lässt sich nachvollziehen, wie sich der installierte Softwarebestand im Laufe der Zeit verändert hat.
Exportdateien versionieren
Da es sich um JSON-Dateien handelt, eignen sie sich hervorragend für Versionsverwaltung.
Beispielsweise mit Git:
winget-config/ │ ├── office-pc.json ├── developer-pc.json ├── admin-pc.json └── test-pc.json
Damit können unterschiedliche Softwareprofile gepflegt werden.
Änderungen an der Paketliste werden nachvollziehbar.
Standardarbeitsplätze definieren
Export und Import müssen nicht ausschließlich für die Wiederherstellung desselben Rechners verwendet werden.
Eine kontrollierte JSON-Datei kann auch als Grundlage für verschiedene Arbeitsplatztypen dienen.
Beispielsweise:
Standard-PC ├─ Browser ├─ PDF-Software ├─ Office-Werkzeuge └─ Kommunikation Entwickler-PC ├─ Git ├─ Visual Studio Code ├─ PowerShell ├─ Python └─ weitere Entwicklerwerkzeuge Admin-PC ├─ Terminal ├─ PowerShell ├─ Administrationswerkzeuge └─ Diagnoseprogramme
Damit wird aus einer Backup-Funktion ein einfaches Werkzeug zur Standardisierung.
Export und Import versus Winget Configure
Für einfache Paketlisten sind:
winget export
und:
winget import
hervorragend geeignet.
Wer jedoch nicht nur Programme installieren, sondern einen umfassenderen gewünschten Systemzustand beschreiben möchte, sollte sich winget configure ansehen.
Microsoft bezeichnet WinGet Configuration als den vollständigeren Ansatz für reproduzierbare Umgebungen, weil neben Paketen auch weitere Systemeinstellungen in einer Konfigurationsdatei beschrieben werden können.
Vereinfacht:
export / import
↓
Welche Programme sollen installiert sein?
configure
↓
Wie soll die gesamte Umgebung konfiguriert sein?
winget configure behandeln wir später ausführlich in einem eigenen Teil der Serie.
Best Practices für den Export
Vor einem Rechnerwechsel sollte zunächst:
winget upgrade
ausgeführt werden, um den Softwarebestand zu prüfen.
Anschließend:
winget export -o winget-apps.json --include-versions
Danach sollte die JSON-Datei geöffnet und kontrolliert werden.
Besonders wichtig sind die Warnungen über Anwendungen, die Winget keiner Source zuordnen konnte.
Diese Programme müssen gegebenenfalls separat dokumentiert werden.
Best Practices für den Import
Vor dem Import sollte zunächst geprüft werden:
winget --version
Danach:
winget source list
und:
winget source update
Erst anschließend:
winget import -i winget-apps.json
So wird sichergestellt, dass Winget und seine Paketquellen verfügbar sind.
Best Practices für Unternehmen
In Unternehmen sollte nicht einfach der Softwarebestand eines beliebigen Arbeitsplatzes exportiert und anschließend auf viele Rechner verteilt werden.
Besser ist:
Referenzsystem erstellen
↓
Softwarebestand prüfen
↓
nicht freigegebene Programme entfernen
↓
Lizenzierung prüfen
↓
JSON-Datei kontrollieren
↓
Testimport durchführen
↓
Version freigeben
↓
kontrolliert verteilen
Damit wird aus einem individuellen Export eine verwaltete Softwaredefinition.
Sicherheitsaspekte
Exportdateien sollten vor dem Import immer kontrolliert werden.
Das gilt insbesondere, wenn sie:
- von anderen Personen stammen,
- aus öffentlichen Repositories geladen wurden,
- längere Zeit nicht verwendet wurden,
- auf eigene Paketquellen verweisen.
Paketquellen sind ein zentraler Bestandteil des Vertrauensmodells. Microsoft empfiehlt ausdrücklich, nur sichere und vertrauenswürdige Winget-Sources zu verwenden.
Eine unbekannte JSON-Datei sollte daher nicht einfach ungeprüft importiert werden.
Praktisches Beispiel: Kompletter Ablauf
Auf dem alten Rechner:
winget export `
-o "D:\Migration\winget-apps.json" `
--include-versions
JSON-Datei anschließend prüfen und sichern.
Auf dem neuen Rechner:
winget --version
Quellen prüfen:
winget source list
Quellen aktualisieren:
winget source update
Anschließend beispielsweise:
winget import `
-i "D:\Migration\winget-apps.json" `
--accept-package-agreements `
--accept-source-agreements
Soll jeweils die aktuell verfügbare Version installiert werden:
winget import `
-i "D:\Migration\winget-apps.json" `
--ignore-versions `
--ignore-unavailable `
--accept-package-agreements `
--accept-source-agreements
Damit steht ein sehr leistungsfähiger Mechanismus für Neuinstallationen und Migrationen zur Verfügung.
Die wichtigsten Befehle dieses Artikels
Export erstellen:
winget export -o winget-apps.json
Versionen mitsichern:
winget export -o winget-apps.json --include-versions
Bestimmte Source exportieren:
winget export -o winget-apps.json --source winget
Import starten:
winget import -i winget-apps.json
Nicht verfügbare Pakete überspringen:
winget import -i winget-apps.json --ignore-unavailable
Gespeicherte Versionen ignorieren:
winget import -i winget-apps.json --ignore-versions
Vorhandene Anwendungen nicht aktualisieren:
winget import -i winget-apps.json --no-upgrade
Nicht interaktiv importieren:
winget import `
-i winget-apps.json `
--accept-package-agreements `
--accept-source-agreements `
--disable-interactivity
Fazit
Mit winget export und winget import wird die Neuinstallation eines Windows-PCs erheblich komfortabler.
Statt sich nach Jahren daran erinnern zu müssen, welche Programme auf dem alten Rechner installiert waren, kann Winget einen großen Teil des Softwarebestands in einer übersichtlichen JSON-Datei dokumentieren.
Mit:
winget export -o winget-apps.json
wird die Paketliste erzeugt und mit:
winget import -i winget-apps.json
auf dem neuen System wieder verarbeitet.
Besonders interessant ist das Verfahren für Rechnerwechsel, Windows-Neuinstallationen, Entwicklerumgebungen, Testsysteme und standardisierte Arbeitsplätze.
Dennoch darf die Funktion nicht mit einem vollständigen Backup verwechselt werden. Winget sichert weder Benutzerdaten noch Programmeinstellungen oder die eigentlichen Installer. Außerdem können nur Anwendungen zuverlässig wiederhergestellt werden, die weiterhin über die benötigten Paketquellen verfügbar sind.
Am besten betrachtet man die JSON-Datei deshalb als reproduzierbare Softwareliste. Kombiniert mit einem echten Datenbackup und gegebenenfalls einer Archivierung wichtiger Installationsmedien entsteht daraus eine sehr leistungsfähige Migrationsstrategie.
Metadaten
Titel:
Teaser:
SEO-Titel:
Meta-Beschreibung:
Meta-Schlagwörter:
OG-Titel:
OG-Beschreibung: