Jitsumi

WinGet Export and Import: Reinstall Apps on a New Windows PC

Use WinGet export and import to reinstall Windows apps on a new PC. Inspect JSON, handle unmatched packages and restore personal files separately.

Conceptual diagram of an old PC's application icons listed in a manifest, leading to fresh installations on a new Windows PC.

You have a new Windows PC and a collection of apps you want to keep: your editor, browser, archive tool, media player and other everyday utilities. WinGet can make reinstalling many of them much less repetitive. Export an installation manifest on the old computer, review the list and import it on the new one.

The exported JSON is an app-installation list, not an application or data backup. It does not move documents, user profiles, saved logins, licences, game saves or every piece of installed software. Make separate backups before switching computers, and do not wipe the old machine until your key apps and files work on the replacement.

This guide covers a move from a supported Windows 10 or Windows 11 machine to Windows 11. It is based on Microsoft's official WinGet documentation, not a claim that the commands were tested against a particular PC.

What WinGet exports—and what it leaves behind

The WinGet export reference describes a JSON file that lists package sources and package identifiers, with versions optionally included. Import uses those identifiers to request new installations. The JSON does not contain the original installers, installed folders or user-specific application data.

Part of the old computer

In the WinGet export?

Your next task

Apps matched to a configured package source

Yes, as package identifiers and source details

Check identity and reinstall on the new PC

Apps WinGet cannot match to available sources

No; an export warning identifies unmatched entries

Note them for manual installation

Documents, settings, profiles and game progress

No

Back them up or use each app's supported sync/export

Accounts, licences and product keys

No

Use vendor-supported sign-in and activation

WinGet's list command can show apps installed by WinGet or by other means. That is useful for an inventory, but it does not make every listed app exportable. Matching depends on metadata in the installed programme and in the configured repository.

Check the old PC before creating the manifest

Save your work, connect to the internet and open PowerShell or Windows Terminal under your normal user account. Run these checks first; they do not reinstall or remove software:

winget --version
winget source list
winget list

If winget is not recognised, consult Microsoft's App Installer setup instructions. The command is included with App Installer on supported Windows systems, and it may need initial user-sign-in registration. On managed work PCs, application installation and repository access may be controlled by policy.

Check the sources displayed. Microsoft's source reference documents winget, msstore and winget-font as default sources. A device can also have custom repositories. Do not add, reset or trust a repository just because another computer uses its name: a source is where WinGet finds package metadata and influences which installers it requests.

Keep a separate list of programmes that matter to you. Include commercial apps, hardware drivers and companion utilities, workplace tools, plug-ins, licensed software and anything installed from a publisher's website. Record where to obtain them through approved channels. This inventory is important because WinGet does not promise to find everything.

Export an installation list and keep its warnings

This example writes to the conventional Desktop folder under your Windows profile. If your Desktop is redirected to OneDrive, managed by an organisation or stored elsewhere, replace the path with an existing folder you control. The command does not uninstall anything:

winget export --output "$HOME\Desktop\apps-to-reinstall.json"

Read all the output. Microsoft explains that export warns when it cannot match an installed application. A successful command does not mean the JSON contains every app. Write down omitted items immediately so you do not rely on a falsely complete list.

By default, import can request the latest versions available from the sources. If you need an additional inventory showing the old installed versions, make a second file:

winget export --output "$HOME\Desktop\apps-with-versions.json" --include-versions

Treat that second file as an audit record. Preserving an old version is not always desirable or possible: the repository may no longer offer it or your new Windows installation may need a newer compatible release. The documented export options distinguish the normal and version-specific forms.

Inspect the JSON rather than assuming the app names are right

Open apps-to-reinstall.json in a trusted local editor. Microsoft's WinGet package-list schema describes a Sources array with Packages entries, including PackageIdentifier and optional Version. The fields are package metadata, not proof that an installer is suitable for every PC.

For a compact review, this PowerShell snippet reads the manifest locally and prints each source and package identifier. The last field may be blank for an export made without --include-versions. It does not install or upload anything:

$path = "$HOME\Desktop\apps-to-reinstall.json"
$manifest = Get-Content -LiteralPath $path -Raw | ConvertFrom-Json
foreach ($source in $manifest.Sources) {
    foreach ($package in $source.Packages) {
        "{0} | {1} | {2}" -f $source.SourceDetails.Name, $package.PackageIdentifier, $package.Version
    }
}

Compare the output with winget list and your separate inventory. Remove packages you no longer want only after keeping an unedited copy of the export. A familiar display name is not enough to trust a package. If one identifier is unclear, use WinGet's package metadata commands and check the publisher's own download page.

The manifest generally contains application identifiers rather than login secrets, but private package sources or specialist installed software can reveal details of a workplace setup. Review it before posting it in a public issue or repository.

Copy the manifest and back up the real data separately

Transfer the reviewed JSON by a storage device or a trusted file-transfer service. Then independently preserve the files that cannot be recovered just by installing an application: local documents, project data, save games, browser profiles, custom presets, application databases and any credentials held in an approved password manager.

Microsoft's Windows Backup guidance describes its own supported file and preference recovery. Windows Backup and WinGet have different roles. A restored app listing or a successful WinGet installation does not establish that every application setting has followed you. Follow your programme's specific export, sync or restore procedure.

Paid software may require licence deactivation, a transfer through the vendor account, or sign-in with a specific identity. Confirm those requirements before returning or resetting the original PC. Avoid blindly copying programme directories into a new installation: some settings are version- or device-specific.

Import apps on the new Windows PC

On the new PC, sign in as the user who should own the apps, connect to the internet and check WinGet and its configured sources:

winget --version
winget source list

Compare the available sources with those in your JSON. If the old PC used a workplace repository that the new PC cannot access, check with your administrator or software publisher. Do not switch to a similarly named package from an unfamiliar repository without confirming its identity.

Place the manifest on the new Desktop or change the path in the next command. Import installs software; it is not a read-only preview.

winget import --import-file "$HOME\Desktop\apps-to-reinstall.json"

The WinGet import reference says packages are installed in sequence; unavailable or already installed applications are reported. Watch the console and any installer window. Some packages ask for elevated permission, agreements, restarts or additional components.

Start from a normal terminal instead of elevating an entire batch by default. Do not add --accept-package-agreements or --accept-source-agreements just to suppress terms you have not inspected. WinGet is the package manager coordinating the work; individual installers still have their own behaviour and requirements.

Diagnose missed packages instead of running the batch repeatedly

Record the exact ID and message for each unsuccessful installation. An absent source, unavailable version and missing settings are different problems:

Symptom

What it suggests

Check first

Package cannot be found

The identifier or repository may not be available on this PC

Source list and exact package identifier

Requested version unavailable

A version recorded in the export is no longer offered

Newer-version compatibility and vendor support

Package is already installed

The existing installation may be recognised or a newer build offered

Open the app and confirm its installed version

Installer asks for elevation

The programme needs higher privileges for a particular step

Publisher identity and intended device change

App opens without its old settings

The installation succeeded but user data did not transfer

Independent backup and app-specific restore

Important app never appeared in JSON

It was omitted or unmatched on export

Manual inventory and official publisher installer

Microsoft documents three import options that change error handling. --ignore-unavailable continues past missing packages and may make omissions less obvious. --ignore-versions requests available versions rather than an exported version. --no-upgrade avoids upgrading already installed applications. The official command reference explains their scope. None of these options restores documents, profiles, licences or passwords.

If a single package fails, inspect that package through the configured repository or install it through the publisher's approved route. Do not treat the failure as a reason to disable security checks or run an unreviewed third-party bulk-install script.

Confirm the move worked before resetting the old PC

Run winget list to review installed applications:

winget list

Then open the applications that actually matter. Check editor extensions and project access, browser bookmarks and password-manager sign-in, game progress, creative software plug-ins, saved templates and file associations. These are example tests of your own workflow, not things WinGet claims to migrate.

If an app opens but a document is missing, the application installation may have succeeded while the file restore remains unfinished. Use your independent backup. If an app is missing, investigate that package; do not undo successfully installed programmes because one entry was unavailable.

Keep both the old PC and its backups until you can answer two questions confidently: are the important applications installed and working, and is the personal state you need available and recoverable? Keep the JSON as a convenient reinstall checklist, but not as a substitute for a tested backup.

Sources and further reading

Share this post