52 Tools: Automated package installers

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:

  1. Installing Applications & Utilities with Ninite
  2. Installing Frameworks and Components with WebPI
  3. Installing.. uh.. everything.. with Chocolatey -- with an nerdy overlap discussion about using Chocolatey to automate WebPI
  4. 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!

Chocolatey

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.

Add-WindowsFeature

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.

Add-WindowsFeature Application-Server
Add-WindowsFeature AS-NET-Framework
Add-WindowsFeature AS-Web-Support
Add-WindowsFeature AS-WAS-Support
Add-WindowsFeature AS-HTTP-Activation
Add-WindowsFeature FileAndStorage-Services
Add-WindowsFeature Storage-Services
Add-WindowsFeature Web-Server
Add-WindowsFeature Web-WebServer
Add-WindowsFeature Web-Common-Http
Add-WindowsFeature Web-Default-Doc
Add-WindowsFeature Web-Dir-Browsing
Add-WindowsFeature Web-Http-Errors
Add-WindowsFeature Web-Static-Content
Add-WindowsFeature Web-Http-Redirect
Add-WindowsFeature Web-Health
Add-WindowsFeature Web-Http-Logging
Add-WindowsFeature Web-Log-Libraries
Add-WindowsFeature Web-Request-Monitor
Add-WindowsFeature Web-Performance
Add-WindowsFeature Web-Stat-Compression
Add-WindowsFeature Web-Dyn-Compression
Add-WindowsFeature Web-Security
Add-WindowsFeature Web-Filtering
Add-WindowsFeature Web-Basic-Auth
Add-WindowsFeature Web-Client-Auth
Add-WindowsFeature Web-Digest-Auth
Add-WindowsFeature Web-Cert-Auth
Add-WindowsFeature Web-IP-Security
Add-WindowsFeature Web-Url-Auth
Add-WindowsFeature Web-Windows-Auth
Add-WindowsFeature Web-App-Dev
Add-WindowsFeature Web-Net-Ext45
Add-WindowsFeature Web-Asp-Net45
Add-WindowsFeature Web-ISAPI-Ext
Add-WindowsFeature Web-ISAPI-Filter
Add-WindowsFeature Web-Mgmt-Tools
Add-WindowsFeature Web-Mgmt-Console
Add-WindowsFeature Web-Scripting-Tools
Add-WindowsFeature NET-Framework-Features
Add-WindowsFeature NET-Framework-Core
Add-WindowsFeature NET-Framework-45-Features
Add-WindowsFeature NET-Framework-45-ASPNET
Add-WindowsFeature NET-WCF-Services45
Add-WindowsFeature NET-WCF-HTTP-Activation45
Add-WindowsFeature NET-WCF-TCP-PortSharing45
Add-WindowsFeature User-Interfaces-Infra
Add-WindowsFeature WAS
Add-WindowsFeature WAS-Process-Model
Add-WindowsFeature WAS-Config-APIs