Maybe in a future post in this blog series, I'll finally learn and document how to SysPrep a VM with the software I want already installed on it. For now, though, when I stand up a new development VM (or demo server, or set up a new Windows tablet), I install from an ISO, apply Windows Patches, set up features and install software.
For a very detailed walkthrough of a similar process to what I've learned, check out Robin Osborne's great 4-part blog series from Jan 2012:
- Installing Applications & Utilities with Ninite
- Installing Frameworks and Components with WebPI
- Installing.. uh.. everything.. with Chocolatey -- with an nerdy overlap discussion about using Chocolatey to automate WebPI
- Installing Custom Stuff, Interesting Things Encountered, and Conclusion
As Mr. Osborne details, a lot of this can be automated. I've started to rely more heavily on package management tools. Three in particular have provided me a lot of value:
As I'm getting better at this, I just noticed BoxStarter on Scott Hanselman's Ultimate Tools List. I'll have to try that!
I'm using this everywhere including on my 8" Windows 10 Preview Tablet. Instead of going to various Shareware and freeware sites to downlod software, I fire up an administrative command window, and copy this text from chocolatey.org (on Windows 10, you can ctrl-v paste into the command window):
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
In that same Window I go forth with a set of utilities I like to have around. Depending on the computer, I usually browse the Chocolatey packages list and find others.
choco install googlechrome
choco install notepadplusplus
choco install 7zip
choco install paint.net
choco install rdcman
choco install lastpass
choco install irfanview
choco install teracopy
Web Platform Installer
WebPI is how I install the various SDKs needed for whatever I'm working on. Basically I look here for anything from Microsoft's platform, depending on what I'm working on (Azure SDK, Office SDK, web developer tools, etc). It's slightly better than searching the web for individual installers.
There's not much to say here other than if you know you need to add a bunch of Windows Features on a new VM, you can take a note of them and script it out. For instance, we use these features which we run as a PowerShell script. If you follow with the discussion on the blog post about a server feature cloning process, you can quickly interrogate a known working server to figure out what needs to go on the next one.