Windows System

Winget Teil 8 – Software exportieren und importieren

Mit Winget lassen sich installierte Anwendungen als JSON-Liste exportieren und auf einem neuen Windows-PC wieder installieren. Ideal für Migration, Neuinstallation, Backup-Dokumentation und standardisierte Arbeitsplätze.

11 min Lesezeit
Grafik: Winget - Software exportieren und importieren

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: