Introduction
Chocolatey
is command line package manager for Windows that gives you a
very Linux -esque software installation experience. This guide
expects that you already are using Chocolatey, but in case you
need convincing here's what makes it so awesome, for example:
choco install google chrome
will install Google
Chrome on your computer without having to wait for the
installer. You can even get fancy and list as many packages as
you would like with a -y
flag to automatically
accept any prompts:
choco install -y autohotkey.portable python3 gimp
Can't undersell how easy this makes to set a computer up for
the first time.
Boxstarter uses Chocolatey packages but adds a few extra tools that allow you to install software faster and make changes to Windows settings. Boxstarter has some amazing functionality that I am not going to touch on here, but I would recommend Checking out their Docs.
Prerequisites to make a Backup
-
A machine running Windows with software installed using Chocolatey
The Process
1. Get a list of your Chocolatey Packages
Open Powershell and enter clist -l
and copy the
output into a file called data.txt
Alternatively,
clist -l > data.txt
will automatically make a
data.txt
file in whatever directory Powershell is
in.
2. Make a Python File with the following code:
import re
## Regex to get package names
regex = re.compile("(?:^|\\n)(\\S{1,})")
## Open data.txt
with open("data.txt", "r") as f:
data = f.read()
matchArray = regex.findall(str(data))
## Use regex to print package names to text file
with open("boxstarterScript.txt", "w") as output:
for match in matchArray:
output.write("cinst " + match + "\n")
Then making sure data.txt is in the same folder, run the
script. You should get boxstarterScript.txt
as an
output.
3. Add any Extra Commands
The code will output a file with a ton of lines that just say
cinst python3
which will work perfectly fine by
itself but we can leverage Boxstarter to do a few other cool
things. I personally add the code below to the top of my
Script. It enables a few Windows File Explorer, I think the
flags are pretty self-explanatory, but if you want more
details or want to see more flags check out the
Boxstarter docs
Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrives -EnableShowProtectedOSFiles -EnableShowFileExtensions
Enable-RemoteDesktop
and at the end of the file, I add a command that forces windows to update.
Install-WindowsUpdate -AcceptEula
4. Using the Script.
Obviously this script that we made doesn't do any good if it
is not accessible to a new machine so paraphrasing from the
Boxstarter guide
I'll give a quick rundown on how to quickly use your backup
using gist. If you don't
want to use Github, my understanding is that any public URL
that gives a raw .txt
page will work, or you can
use a different method to get the .txt
to your
machine.
If you don't have Boxstarter or Chocolatey installed then open Powershell and run:
. { iwr -useb https://boxstarter.org/bootstrapper.ps1 } | iex; get-boxstarter -Force
Then you can run the script we made by opening the Boxstarter
shell and running the Command below. Replace
PATH_TO_boxstarterScript.txt
with either the URL
to your script. i.e.
https://gist.githubusercontent.com/MisterBiggs/97e8e065f8a8d1d941a2c3377e229dad/raw/9804bbd5e3131ec9aebbff71395df9e382fbae1b/boxstarterScript.txt
(Make sure you use the raw link to your gist)
or
C:\Users\albig\Documents\backupScript\boxstarterScript.txt
Install-BoxstarterPackage -PackageName PATH_TO_boxstarterScript.txt -DisableReboots
Conclusion
In this tutorial, we were able to make a backup of all the software installed on your machine in a way that is extremely easy to replicate and automate the install of on a new machine.