Technical guide

How to Export and Restore an App List with WinGet

Use WinGet export and import to save a Windows app manifest and batch reinstall matched packages, while understanding versions, sources, unmatched apps, and backup limitations.

On this page
  1. WinGet export saves a package manifest, not your applications themselves
  2. Export the app list to JSON
  3. Decide whether you actually want to pin exported versions
  4. Review the JSON and the export warnings before relying on it
  5. Import the manifest on the target Windows installation
  6. Use import options for known exceptions, not to hide an unreviewed manifest
  7. Keep WinGet app restoration separate from drivers and full-system recovery

WinGet export saves a package manifest, not your applications themselves

Windows Package Manager can export a JSON list of applications that it can match to packages in configured WinGet sources. Microsoft positions the export/import pair as a way to batch install applications, including when rebuilding a development environment. The resulting file identifies packages and their sources; it does not contain the installed program files.

That distinction matters before a Windows reinstall or PC migration. A WinGet export is not a backup of application data, preferences, sign-ins, product keys, license entitlements, save files, plug-ins, arbitrary installers, or files stored elsewhere on the PC. Back up those items separately when the application or your workflow requires them.

Export the app list to JSON

Open Windows Terminal, Command Prompt, or PowerShell and run `winget export -o apps.json`. The `-o` or `--output` argument selects the JSON file to create. You can provide a fuller path instead when you want the manifest written directly to a backup or transfer location.

Microsoft says export attempts to match installed applications against packages available from configured sources. Matching depends on metadata in the source manifest and the application metadata registered with Windows by its installer. If WinGet cannot match an installed application to an available source package, it prints a warning rather than silently turning that application into a restorable package entry.

What a WinGet export can preserve versus what needs another backup method
ItemIn the WinGet export?What to expect
Package identifier and sourceYes, for matched packagesUsed by WinGet to resolve packages during import
Installed package versionOptionalAdd `--include-versions` when you intentionally want version entries in the JSON
Program files / installer payloadsNoImport obtains packages through the configured source rather than restoring copied application binaries
Application settings and user dataNoBack up or synchronize them using the application or an appropriate file/system backup method
Licenses, accounts, and activation stateNo general guaranteeHandle licensing and sign-in according to the software vendor
Applications WinGet cannot matchNo package entryReview export warnings and plan a separate reinstall method

Decide whether you actually want to pin exported versions

By default, `winget export` does not include the currently installed version. Microsoft documents `--include-versions` for cases where you want version information written into the manifest; without it, a later import uses the latest available version.

Including a version does not guarantee that the same build will remain available from the source indefinitely. On the import side, `--ignore-versions` tells WinGet to ignore version entries in the JSON and install the latest available version instead. Treat version fields as package-resolution instructions, not as archived installer media.

Review the JSON and the export warnings before relying on it

Microsoft explicitly allows the exported JSON to be edited. Before using it as a rebuild list, review the warnings from the export and inspect the package list. Remove software you do not intend to reinstall, and make a separate note of important applications that WinGet could not match.

The JSON schema groups packages under their sources and records each package identifier, with an optional version. That makes the file useful as a reproducible install manifest, but it also explains why an application absent from the available source cannot simply be reconstructed from the JSON alone.

Import the manifest on the target Windows installation

Move the JSON file to the target PC or restored Windows installation, make sure WinGet and the required sources are available, then run `winget import -i apps.json`. Microsoft says import processes the specified applications serially and notifies you when a requested application is unavailable or is already installed.

Source and package agreements can still require acceptance. WinGet provides `--accept-source-agreements` and `--accept-package-agreements` for cases where you deliberately want to accept those agreements without the normal prompts. Do not add those switches mechanically: they change the interaction by accepting terms on your behalf.

Use import options for known exceptions, not to hide an unreviewed manifest

Microsoft documents `--ignore-unavailable` to suppress errors for requested applications that are unavailable, `--ignore-versions` to disregard versions in the JSON, and `--no-upgrade` to skip an upgrade when a version of an application is already installed. These options are useful when their behavior matches your rebuild plan.

They do not make a stale or incomplete manifest complete. If a package disappeared from a source, changed identity, requires a different installer path, or was never matched during export, review that application individually. The safer workflow is to keep the warnings visible until you understand which programs need manual handling.

Keep WinGet app restoration separate from drivers and full-system recovery

WinGet export/import is an application-package workflow. It should not be treated as a substitute for a disk image, Windows backup/recovery plan, or a deliberate copy of personal files. It also serves a different purpose from exporting third-party drivers: a package manifest describes applications WinGet can resolve from package sources, while driver backup deals with driver packages used by Windows hardware devices.

For a migration, use the WinGet manifest as one layer of the plan: preserve personal and application data with the appropriate backup method, record software that export could not match, retain any licensing information you are entitled to keep, and then use import to automate the portion of application reinstallation that WinGet can actually resolve.

Go deeper

Related Core Tech Tips guides

Sources

Primary and technical sources

Technical details can vary by exact model, firmware, and platform. These are the sources used for the factual claims in this article.

  1. 01 Microsoft Learn

    WinGet export command: JSON schema, package matching, version option, and unmatched-application warnings
  2. 02 Microsoft Learn

    WinGet import command: batch installation, versions, unavailable packages, upgrades, and agreement options

Related

Technical guide

How to Back Up Installed Drivers in Windows 11

Export third-party driver packages from the Windows 11 driver store with PnPUtil, preserve them before a reinstall, and understand what the backup does and does not contain.

Technical guide

How to Use System Restore in Windows 11

Use System Restore in Windows 11 from the desktop or Windows Recovery Environment, create restore points, check affected programs, and understand what restoration changes.