Published Oct 17, 2026, 8:00 PM EDT Shekhar Vaidya is a veteran technology journalist and computer science engineer. He is the founder of TechLatest, where he has spent years providing technical analysis on hardware and Windows ecosystems. Now a Computing Writer at XDA, Shekhar leverages his deep background in NAS, storage solutions, and PC internals to help readers master their tech. You know what the worst part of getting a new Windows PC or doing a clean Windows install is? Once you boot up for the first time, the PC is blank, and it takes many hours to make it yours. As someone who is into consumer tech journalism and keeps testing new hardware, I have been in that situation many times. After each Windows reinstall, I have to install the same browsers, utilities, launchers, and dev tools. These are the decisions I made years ago, and each time I just repeat them. So I decided to find an easier way and build a winget configuration file that could describe my whole setup. The export was only half the job My export found 150 apps, and my browser wasn't one of them I have been using winget for many years. In case you are not familiar, winget is Microsoft’s official command-line package manager. It is similar to apt or apt-get in Linux. You can search, install, uninstall, and upgrade app packages with winget commands. There are many built-in commands and options, but the one that most helped me for this experiment was export. It lets me export the list of all installed packages. So I started by running the export command and exported the packages with versions to a JSON file. winget export -o apps.json --include-versions The export captured more than 150 packages from the winget source and a few from the Microsoft Store. But those weren’t all the apps I had; it couldn’t export apps that weren’t available from either of the sources, like the software I installed manually (Brave, Discord, Postman, and Android Studio, etc.). The export wasn’t the final file that could rebuild my PC. The export is JSON, while the configure command needs a YAML file, so it had to be converted first. I had to manually edit the file to add the missing packages and remove the packages that were exported twice because I had both system and user installations. There is one more interesting command in winget, the configure command. It reads a YAML file and applies all of it in one go, apps and Windows settings included. It can import Windows settings as well, but the export command doesn’t capture those settings, though. So, I added three by hand — Developer Mode, file extensions and hidden files, and dark mode. I could have exported my VS Code extensions too, but these days I am jumping from Antigravity to Claude Code more often than VS Code, so I skipped that. In the end, I split that one file with 100+ apps and settings into two. The first file covered the core apps like development tools, everyday software, and homelab access tools, and the second file included hardware/vendor tools, game launchers, and flight simulation tools. The next step was to test whether this was all theoretical or if it could actually rebuild my PC. I hit Enter on a blank Windows install Every app installed itself after one step I didn’t expect Exporting the file and editing it wasn’t the final step. I had to test it myself to actually keep the file and trust it. Unfortunately, I didn’t have a spare Windows laptop, so I used a VM to test the file with a limited number of packages. I downloaded the latest Windows 11 26H2 ISO file, fired up VMware, and booted into a clean Windows install within a few minutes. Before doing anything, I cleared all the pending Windows updates, and once it was done, I checked whether it had winget. The fresh machine was ready with winget v1.11.510. I moved the YAML file to the VM and tried to do a validation test using winget configure validate. But the first time winget configurit failed because I had to manually enable it. Once I enabled it using winget configure --enable, and ran the validation again, it returned no issues. So, I was good to go. Note that the VM test file had the three Windows settings and 14 applications instead of all 150+ apps. I ran the winget configure command and measured the time. It successfully installed the apps but only applied two out of three Windows settings I included. Because PowerShell wasn’t running as admin, and Measure-Command had hidden that failure the first time. Measure-Command { winget configure -f workstation-vm-test.dsc.yaml --accept-configuration-agreements } The test took 14 minutes and 26.8 seconds for those settings and 14 applications, but it could have been less, as I missed some UAC prompts and left them waiting. So, I ran the test again in a fresh VM; it came in under 12 minutes. This was proof that the configuration file works for those 14 apps and can be used later. But there were a few things it couldn’t bring back. Everything the file never promised The apps came back, but none of them remembered me There is a difference between being installed and configured. The winget configuration file could successfully install the apps, but it was all new when I opened the apps. The browsers were without the profiles, history, and passwords; the utility apps were signed out. VS Code had no extensions; well, that was on me. I didn’t include them in the export. There was another thing I noticed. The file had included versions for each app, but those weren’t pinned; the machine got newer versions than my PC. For example, Node 22.23.2 vs 22.14, Python 3.13.15 vs 3.13.3, and Git 2.55.0 vs 2.53.0. I had no issues with it, but if you are staying on a particular build of an app, you need to take care of that manually. Licensed apps like MS Office and Adobe Suite were another responsibility on my shoulders. They’re left for me because each requires separate authentication. And I specifically left a few sensitive things like SSH keys and git credentials out of it for obvious reasons. And I didn’t test the taskbar and Start layout, default apps, and display scaling, so I can’t comment on that. But for me, I can live with these tradeoffs. If I ignore the enabling of winget configuration before running the file, it is just one command that helped me install all the apps and apply Windows settings. A baseline, not a backup This small experiment showed me a single winget configuration file can reduce the repeatable and boring task of installing most of the old applications. The file gave me a starting point, not an exact copy of my old PC. But I didn’t want the exact copy anyway, as keeping logins and licenses in a YAML file isn’t safe and the drivers are device-specific, so moving them along has no benefits. Finally, a documented, repeatable baseline is much better than starting from scratch and relying on your memory.
I rebuilt my Windows PC from one YAML file, and I'm never clicking through installers again
Full Article
Original Source
Read the full article at Xda-developers →KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.