Modern Windows systems offer several ways to install applications—primarily via the graphical Microsoft Store or winget
, the Windows Package Manager CLI. For regular updates and one-off installations, these interfaces are typically sufficient.
But what about clean installs? Or setting up multiple machines with a consistent baseline of essential apps?
That’s exactly where install-windows-apps.ps1
comes in.
This minimal PowerShell script isn’t a provisioning framework. Instead, it’s a practical helper for:
- Bootstrapping a fresh Windows installation quickly
- Maintaining consistency across multiple devices
- Avoiding “Did I forget anything?” moments
- Saving time on repetitive GUI-based installs
Use Case: Initial & Repeatable Setup
This script is best suited for:
- Fresh installations (e.g., after resetting Windows or replacing hardware)
- Re-deploying lab or test machines
- Helping tech-savvy friends or family with setup
- Developers moving to a new laptop or VM
Its purpose is speed and consistency—install 90% of your stack in minutes, not hours.
Note: This script is not a GUI replacement. It’s a helper to get you to that point faster.
Structure and Simplicity
The script relies on simple, readable Install-App
calls:
Install-App "Mozilla.Firefox"
Install-App "Notepad++.Notepad++"
It can also install Microsoft Store apps and VS Code extensions if required. No need to learn a DSL, install third-party tooling, or debug YAML. It’s pure PowerShell and winget
.
You can comment, extend, or remove lines easily to customize your own install baseline.
Example: Bootstrap Flow After Reinstall
- Install Windows
- Enable PowerShell script execution (
Set-ExecutionPolicy
) - Clone your dotfiles or config repository
- Customize
install-windows-apps.ps1
as needed - Run the script
- Done — your system is ready to use
Final Thoughts
This script reflects a pragmatic mindset: tools should save time, not add complexity. If you frequently reinstall machines, help others with setup, or simply want to maintain a personal software standard, this lightweight approach can save hours of work.
It doesn’t try to automate everything. It just ensures you never forget the things that matter.