Scripted Windows App Installation for Consistency

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 Chocolatey comes in.

The following 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 choco .exe and add choco to PATH
[System.Net.ServicePointManager]::SecurityProtocol = 3072
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

choco feature enable -n allowGlobalConfirmation

# Chocolatey GUI
choco install chocolateygui -y

## Browsers
choco install brave -y
# choco install googlechrome -y
# choco install firefox -y
# choco install chromium -y
# choco install opera -y

## Dev tools
# choco install cygwin -y
choco install wireshark -y
choco install git.install -y
#choco install sourcetree -y
#choco install postman -y
#choco install docker-compose -y
choco install mqtt-explorer -y
choco install openssl -y

## Server tools
choco install putty.install -y
choco install winscp.install -y
choco install nmap -y
choco install heidisql -y
# choco install filezilla -y

## Environments
choco install jre8 -y
choco install powershell -y
choco install vcredist140 -y
#choco install dotnet3.5 -y
#choco install docker-desktop -y
#choco install slack -y
#choco install gitkraken -y
choco install postman -y
choco install powershell-core -y
#choco install terraform -y
#choco install awscli -y
#choco install kubernetes-cli -y
choco install azure-cli -y

## System management tools
choco install procmon -y
choco install opensslprocexp -y
choco install processhacker.install -y
#choco install sysinternals -y
# choco install bginfo -y

## VM
# choco install vmware-workstation-player -y
# choco install virtualbox -y

## Text editors and development tools
choco install notepadplusplus.install -y
choco install visualstudiocode -y
#choco install arduino -y

## Office
choco install libreoffice-fresh -y
choco install thunderbird -y
# choco install adobereader -y
choco install foxitreader -y
choco install pdfsam.install -y
# choco install kindle -y
choco install freemind -y
# choco install office365proplus -y

## Collaboration
choco install microsoft-teams.install -y
choco install webex-meetings -y
choco install gotomeeting -y
choco install zoom -y
# choco install dropbox -y
choco install nextcloud-client -y
choco install jabra-direct -y
choco install phonerlite -y
choco install teamviewer -y

## Media
choco install vlc -y
choco install deezer -y
# choco install spotify -y
# choco install gimp -y
choco install audacity -y
choco install obs-studio.install -y
choco install drawio -y
choco install shotcut.install -y
choco install eac -y
#choco install fsviewer -y
choco install imageresizerapp -y

## Messanger
choco install element-desktop -y
#choco install whatsapp -y
choco install telegram.install -y

## Virtual private network
choco install openvpn -y
choco install wireguard -y

## Productivity and utilities
#choco install freecommander-xe.install -y
choco install totalcommander -y
# choco install ccleaner -y
# choco install partitionwizard -y
choco install windirstat -y
choco install treesizefree -y
# choco install winrar -y
# choco install 7zip -y
choco install peazip -y
choco install rufus -y
choco install burnawarefree -y
choco install deepl -y
choco install dexpot -y
choco install greenshot -y

## Security
choco install keepass -y
choco install winauth -y

## Gaming
choco install steam -y
choco install ea-app -y

choco feature disable -n allowGlobalConfirmation

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.

$vsCodeExec = ($Env:PROGRAMFILES) + "\Microsoft VS Code\bin\code.cmd"
$extensions = @(
    "ms-vscode.cpptools",                   # C/C++ Language Support
    "ms-dotnettools.csharp",                # C# Language Support
    "dbankier.vscode-instant-markdown",     # Markdown Language Support
    "ms-vscode.powershell",                 # PowerShell Language Support
    "huntertran.auto-markdown-toc",         # Auto markdown toc
    "jeff-hykin.better-cpp-syntax",         # CPP syntax highlighter
    "ms-vscode.cpptools-extension-pack",    # CPP Extension Pack
    "ms-vscode.cpptools-themes",            # CPP Themes
    "github.vscode-pull-request-github",    # GitHub integration
    "platformio.platformio-ide",            # Arduino PlatformIO
    "humao.rest-client"                     # Rest API
) | SORT

$extensions | ForEach-Object {
    try {
        Invoke-Expression "& '$vsCodeExec' --install-extension $_ --force"
        Write-Host # New-Line
    } catch {
        $_
        Exit(1)
    }
}

You can comment, extend, or remove lines easily to customize your own install baseline.

Example: Bootstrap Flow After Reinstall

  1. Install Windows
  2. Enable PowerShell script execution (Set-ExecutionPolicy)
  3. Clone your dotfiles or config repository
  4. Customize install-windows-apps.ps1 as needed
  5. Run the script
  6. Done — your system is ready to use

Keeping Everything Up-to-Date – with One Command

Once your apps are installed via Chocolatey, keeping your system up-to-date becomes effortless. Instead of manually checking each application for updates, you can either:

Use the Chocolatey GUI → A graphical interface to review, update, and manage installed software → Launch it via Start Menu: Chocolatey GUI

or use the Command Line to update everything in one go:

choco upgrade all -y

This single command checks for updates and installs the latest versions for all Chocolatey-managed applications — unattended and fast.

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.