WinGet can export the installed applications it recognizes to a JSON file, which you can save somewhere that survives a PC reset and later import to reinstall those apps in a batch. This guide applies to Windows 11 and Windows 10 version 1809 (build 17763) or later, where the Windows Package Manager (winget) is supported. It restores an app list, not each app’s documents, settings, sign-ins, licenses, activation, browser profiles, or game saves.

Prerequisites and compatibility​

Before starting, make sure you have:
  • An internet connection for the later reinstall.
  • A USB drive, external drive, cloud-storage folder, or another PC on which to save the exported JSON file.
  • Sufficient administrator access to approve installers after the reset. Exporting the list normally does not require elevation.
  • Windows Package Manager / App Installer installed and current.
  • A backup of personal files and important app data. winget export does not back up data stored in %AppData%, %LocalAppData%, Documents, OneDrive folders, databases, Outlook data files, virtual machines, game saves, or license keys.
WinGet attempts to match installed programs with packages available from its configured sources, such as the WinGet community repository and Microsoft Store. Programs that cannot be matched—custom business apps, older installers, drivers, portable apps, locally installed .exe files, and some Store or manufacturer utilities—may not appear in the export.

Back up the installed app list before resetting the PC​

  1. Choose a backup location that will survive the reset.
    Create a folder on a USB drive, external drive, or cloud-synced folder. For example:
    E:\PC-Reset-Backup
    Do not save the only copy to the Windows system drive, Desktop, or Downloads folder. A reset that removes everything will erase it, and even a “Keep my files” reset is not a substitute for a separate backup.
  2. Check that WinGet is available.
    Right-click Start and select one of the following:
    • Windows 11: Terminal
    • Windows 10: Windows PowerShell or Command Prompt
    Run:
    winget --version
    Expected result: WinGet displays a version number, such as v1.x.x.
    If you see a message that winget is not recognized, skip to Troubleshooting: “winget is not recognized” before continuing.
  3. Export the recognized installed-app list.
    In the same window, replace E:\PC-Reset-Backup with your actual backup folder and run:
    winget export --output "E:\PC-Reset-Backup\winget-apps.json"
    If prompted to accept source agreements, read the prompt and type the requested confirmation.
    Expected result: WinGet creates winget-apps.json and reports the export status. It may also show warnings that some installed applications could not be matched to an available package source.
    Those warnings matter: every unmatched application must be recorded and reinstalled manually later.
  4. Review the export warnings before resetting.
    Scroll through the Terminal or PowerShell output. Look for programs WinGet could not match, unavailable sources, or errors.
    Then open the exported file to confirm that it is not empty:
    notepad "E:\PC-Reset-Backup\winget-apps.json"
    Expected result: Notepad opens a JSON file containing one or more Sources and Packages entries. Do not edit the file unless you understand JSON syntax; one missing comma or quotation mark can prevent importing it.
  5. Record apps that WinGet cannot restore.
    In addition to the JSON file, create a simple text file named manual-apps.txt in the same backup folder. Include, as applicable:
    • VPN clients and configuration files
    • Printer/scanner software
    • Manufacturer recovery, update, or control apps
    • Device drivers and docking-station software
    • Work, school, medical, accounting, or line-of-business applications
    • Apps installed from a company portal
    • Portable applications
    • Apps with separate installers, license keys, or offline media
    • Apps WinGet reported as unmatched
    You can also compare against the installed-app list in Settings:
    • Windows 11: Settings > Apps > Installed apps
    • Windows 10: Settings > Apps > Apps & features
  6. Copy and test the backup file.
    Confirm that winget-apps.json exists in the external or cloud location. If practical, make a second copy in a separate location.
    You can confirm the number of package records in the file with PowerShell:
    ((Get-Content "E:\PC-Reset-Backup\winget-apps.json" -Raw | ConvertFrom-Json).Sources | ForEach-Object { $_.Packages }).Count
    Expected result: PowerShell returns a number greater than zero. This is the count of package entries WinGet exported, not necessarily the total number of entries visible under Installed apps.
  7. Back up app data separately before the reset.
    Warning:
    Resetting Windows removes installed desktop apps. Choosing Keep my files is designed to retain personal files, but it does not preserve installed applications and should not be your only backup plan.
    Back up any data the applications need before you reset, including browser bookmarks or profiles, password-manager recovery information, email archives, application databases, virtual machines, templates, custom dictionaries, game saves, and license information. Sign out of or document accounts that require multi-factor authentication so you can sign in again afterward.
  8. Reset Windows only after verifying the external backup.
    The reset path differs by version:
    • Windows 11: Settings > System > Recovery > Reset this PC > Reset PC
    • Windows 10: Settings > Update & Security > Recovery > Reset this PC > Get started
    Follow the on-screen choices appropriate for your situation.
    Warning: Selecting Remove everything erases personal files, apps, and settings from the Windows drive. It will also erase the exported JSON file if its only copy is on that drive. Confirm that the external or cloud copy opens successfully before selecting this option.
    A restart is required as part of the Windows reset process. Do not disconnect power during the reset, particularly on a laptop with a low battery.

Reinstall the saved app list after the reset​

  1. Finish Windows setup and connect to the internet.
    Sign in with the account you intend to use. Run Windows Update before bulk-installing software:
    • Windows 11: Settings > Windows Update > Check for updates
    • Windows 10: Settings > Update & Security > Windows Update > Check for updates
    Restart if Windows requests it.
  2. Restore the exported JSON file to an accessible location.
    Connect the USB or external drive, or download the file from your cloud backup. For example, confirm it is available at:
    E:\PC-Reset-Backup\winget-apps.json
  3. Confirm that WinGet is installed on the reset PC.
    Right-click Start and select:
    • Windows 11: Terminal (Admin)
    • Windows 10: Windows PowerShell (Admin)
    Approve the User Account Control prompt, then run:
    winget --version
    If WinGet is missing, install or update App Installer from Microsoft Store, restart Terminal, and run the command again.
  4. Import the saved application list.
    Run:
    winget import --import-file "E:\PC-Reset-Backup\winget-apps.json"
    Read and accept source or package license prompts when they appear. WinGet processes the packages serially, so a large app list can take much longer than the original 15-minute preparation time.
    Expected result: WinGet downloads and installs each package it can find. Some installers may display their own setup windows, request elevation, ask where to install, or require a restart.
    Do not close the Terminal window until WinGet reports completion or an error. If an installer asks to restart Windows, complete the restart, reopen Terminal (Admin), and rerun the same import command. WinGet reports apps that are already installed rather than reinstalling them unnecessarily.
  5. Use automatic agreement acceptance only if appropriate.
    For an unattended or repeated installation, you can use:
    winget import --import-file "E:\PC-Reset-Backup\winget-apps.json" --accept-source-agreements --accept-package-agreements
    Warning: These switches automatically accept source and package agreements. Use them only when you have reviewed the app list and are comfortable accepting the relevant terms without individual prompts.
  6. Reinstall manually recorded applications and restore their data.
    Install the items from manual-apps.txt using their official company, school, manufacturer, or software-vendor distribution channel. Then restore the data backups you made before the reset and sign in to each app as needed.

Verify the restore​

  1. Open the JSON file and compare its package count with the import output:
    ((Get-Content "E:\PC-Reset-Backup\winget-apps.json" -Raw | ConvertFrom-Json).Sources | ForEach-Object { $_.Packages }).Count
  2. Review installed programs:
    • Windows 11: Settings > Apps > Installed apps
    • Windows 10: Settings > Apps > Apps & features
  3. Check a specific restored app with WinGet. Replace the example identifier with one from your JSON file:
    winget list --id Microsoft.PowerToys
    Expected result: WinGet lists the installed package and its installed version.
  4. Launch critical apps individually. Confirm that they open, can sign in, can access required files, and have their expected permissions. Reconnect printers, VPNs, storage devices, and work accounts only after their supporting software is installed.

Alternate method: preserve currently installed versions​

By default, winget export saves package identifiers and lets the later import install the latest available versions. That is generally preferable after a reset because it reduces the chance of reinstalling outdated software.
If you specifically need the same package versions where they remain available, create a second export before resetting:
winget export --output "E:\PC-Reset-Backup\winget-apps-with-versions.json" --include-versions
To restore that version-pinned list later:
winget import --import-file "E:\PC-Reset-Backup\winget-apps-with-versions.json"
Older versions may no longer be published by the package source. If that occurs, use the normal winget-apps.json export to install the latest version, or obtain the required version from the software vendor through an authorized source.

Troubleshooting and recovery​

winget is not recognized​

App Installer, which supplies WinGet, may be missing, outdated, or not registered for the signed-in user.
  1. Open Microsoft Store.
  2. Search for App Installer published by Microsoft.
  3. Install or update it.
  4. Close all Terminal, PowerShell, and Command Prompt windows.
  5. Open a new Terminal window and run:
    winget --version
If App Installer is already present but WinGet is unavailable immediately after a newly created Windows user signs in, open PowerShell and run:
Add-AppxPackage -RegisterByFamilyName -MainPackage Microsoft.DesktopAppInstaller_8wekyb3d8bbwe
Close and reopen Terminal, then test winget --version again.

The export reports unmatched applications​

This is expected for programs WinGet cannot identify from an enabled package source. The JSON file is still usable for the matched packages.
Do not try to force unknown entries into the JSON by guessing package identifiers. Instead:
  1. Add the missing program to manual-apps.txt.
  2. Back up its data and license information separately.
  3. Reinstall it later from the vendor, employer, school, device manufacturer, or company portal.

The export file is empty, missing, or cannot be opened​

First confirm the destination drive letter and available space. USB drive letters can change after reconnecting.
Run the export again to a folder you know you can write to:
Code:
mkdir "C:\Temp\WingetBackup" -Force
winget export --output "C:\Temp\WingetBackup\winget-apps.json"
Open the file with Notepad, then copy it to your external or cloud backup location. If the JSON was manually edited and import fails, return to the untouched backup copy or generate a new export from the pre-reset PC if it is still available.

The import says a package is unavailable​

A package can disappear from a source, be renamed, or be unavailable in your region. Continue with the remaining packages by adding --ignore-unavailable:
winget import --import-file "E:\PC-Reset-Backup\winget-apps.json" --ignore-unavailable
Then use the import output to identify skipped apps and install them manually from their official source.

An import stops because an app is already installed​

This is normal if you ran the import more than once, restored an app manually, or Windows included an app by default. To retain already installed versions rather than upgrade them during import, use:
winget import --import-file "E:\PC-Reset-Backup\winget-apps.json" --no-upgrade

An installer fails, needs a restart, or requests interaction​

Run the failed app’s installation separately after the bulk import so you can see its full installer messages. First identify its package identifier in the JSON file, then run:
winget install --id <PackageIdentifier> --exact --interactive
Restart Windows if the installer requests it, then rerun the import command or install the remaining failed packages individually.

The reset is complete but the app list backup was lost​

There is no rollback through WinGet if the only JSON copy was erased during the reset. Check your cloud-storage recycle bin, external-drive backups, another PC, File History, or a system image. If no copy exists, rebuild the list from purchase history, browser download history, email receipts, company software portals, and the manually maintained app list.