I've been building a lot of systems lately. New VMs, new laptops, and new desktops. Each time I wind up installing about 20 or so common applications; VSCode, Visual Studio, Paint.net, etc. There are three major package managers for Windows, and none of them has everything I need. So I built a bookmark file with links to the official downloads for these things (which you can find here.)
But it's a tedious process, so I started thinking about making a PowerShell script to do it for me.
I began working on a script to handle the various use cases: MSI files, EXE files, random PS scripts. It was getting out of hand quickly.
It was time to distill this down to a repeatable process.
And that, of course led to generalising the process, which led to finding the path of least resistance for each thing I wanted to install, which led to studying the major package managers on Windows. The result is FreshBuild, a PowerShell Module that runs on
any Windows 10 system and can bootstrap the installation of an entire system by simply installing the module from PowerShell Gallery and then
starting the FreshBuild. A default JSON file resides in a Gist and can be used to bootstrap a ready-to-use Windows 10 Dev machine, or you can follow the instructions in the README to customize a json file for your own tastes.
All Windows 10 machines come with
OneGet installed and configured with PowerShell Gallery as a source. Simply use
Install-Module to download and bootstrap FreshBuild and away you go!
Install-Module -Name FreshBuild -Scope AllUsers Import-Module -Name FreshBuild # Installs WinGet, Scoop, and Chocolatey Initialize-FreshBuild -All # Begin installations Start-FreshBuild
I already have many ideas for improvements, such as:
- a GUI for managing the json file
- a repository of json files
- a building-blocks system where the gui can select a topic and have items pre-selected
I'm also open to your ideas. Add a comment or post a ticket on the GitHub Project with questions.