What This Script Does

The install-essential-apps.ps1 script automates the process of installing a carefully curated collection of essential Windows applications through the Chocolatey package manager. Instead of spending an hour or more downloading installers from individual websites, navigating through setup wizards, and clicking through license agreements, this script installs all of your core applications in a single automated run. It is designed to be the second script you run after install-chocolatey.ps1, transforming a bare Windows installation into a fully equipped workstation.

At its core, the script defines a customizable array called $apps that contains the Chocolatey package identifiers for each application to be installed. The default list has been carefully selected to cover the most common needs of developers, IT professionals, and power users. The included applications represent browsers for web access and testing, development tools for coding and version control, utilities for file management and media playback, and communication and entertainment platforms. Each package identifier in the array corresponds to a verified package in the Chocolatey Community Repository, ensuring that you receive the official, unmodified version of each application.

The default application list includes Google Chrome and Mozilla Firefox as primary and secondary web browsers, providing both Chromium-based and Gecko-based options for web browsing and development testing. Microsoft Edge is also included, though it comes pre-installed on modern Windows systems, having it managed by Chocolatey ensures it stays up to date through the same automated update pipeline as your other applications. Visual Studio Code is included as the primary code editor, offering a lightweight yet powerful development environment with an extensive extension marketplace. Notepad++ provides a fast, lightweight alternative for quick text editing and log file viewing.

For development infrastructure, the script installs Git, which is essential for version control and is a prerequisite for countless development workflows. PowerShell 7 or later is included to provide the modern, cross-platform version of PowerShell alongside the built-in Windows PowerShell 5.1. Having both versions available ensures compatibility with older scripts while giving you access to the latest PowerShell features and improvements. The 7-Zip file archiver handles compressed file formats far more efficiently than the built-in Windows extraction tool, supporting formats like 7z, RAR, TAR, and many others.

VLC media player is included as a universal media player that handles virtually every audio and video format without requiring additional codec installations. Windows Terminal provides a modern, tabbed terminal experience that unifies PowerShell, Command Prompt, and WSL terminals in a single application with GPU-accelerated text rendering and extensive customization options. Discord serves communication needs for development communities and team coordination, while Steam provides access to the gaming platform for leisure time.

One of the most valuable aspects of this script is its customizability. The $apps array is designed to be easily modified before running the script. You can add packages by looking up their identifiers on the Chocolatey Community Repository website, remove packages you do not need, or rearrange the order of installation. For enterprise environments, system administrators often create a customized version of this array that includes organization-specific tools such as Slack, Microsoft Teams, specific VPN clients, or proprietary software that has been packaged for Chocolatey.

The script processes each application in the array sequentially, running the choco install command for each one. This sequential approach is intentional rather than parallel because some applications have shared dependencies or may conflict during simultaneous installation. For each application, the script logs whether the installation succeeded, whether the package was already installed, or whether any errors occurred. This per-package tracking makes it easy to identify which specific application caused a problem if something goes wrong during a batch installation.

Error handling in this script is designed to be resilient. If one application fails to install, the script does not abort the entire process. Instead, it logs the failure and continues with the next application in the list. At the end of the run, a summary report shows which applications were successfully installed, which were already present, and which failed. This approach ensures that a single problematic package does not prevent the rest of your essential applications from being installed.

The script requires that Chocolatey is already installed on the system, which is why install-chocolatey.ps1 should be run first. If Chocolatey is not detected, the script will exit with a clear error message directing you to run the installation script. Administrator privileges are required because Chocolatey package installations typically modify the Program Files directory and system PATH, both of which require elevated permissions.

All output from the installation process is logged to %USERPROFILE%\Logs\EssentialAppsInstall.log, providing a detailed record of every package operation. This log file is invaluable for troubleshooting failed installations, verifying which versions were installed, and maintaining an audit trail of changes made to the system. The log includes timestamps, package names, version numbers, and the full output from each Chocolatey installation command.

This script is particularly useful when setting up new machines, whether it is a fresh Windows installation, a new laptop for a team member, or a virtual machine for testing. By maintaining a customized version of this script with your preferred application list, you can reproduce your exact software environment on any Windows machine in minutes rather than hours. Combined with the backup and restore functionality provided by backup-packages.ps1, you have a complete solution for software environment management.

Usage

Open an elevated PowerShell window and navigate to the script directory.

# Run with the default app list
.\install-essential-apps.ps1

To customize the application list, open the script in a text editor before running it and modify the $apps array:

# Default apps array inside the script
$apps = @(
    "googlechrome"
    "firefox"
    "microsoft-edge"
    "vscode"
    "notepadplusplus"
    "git"
    "powershell-core"
    "7zip"
    "vlc"
    "microsoft-windows-terminal"
    "discord"
    "steam"
)

You can add or remove entries as needed. To find Chocolatey package names, search the Chocolatey Community Repository.

Default Applications

Application Chocolatey Package Category
Google ChromegooglechromeBrowser
Mozilla FirefoxfirefoxBrowser
Microsoft Edgemicrosoft-edgeBrowser
Visual Studio CodevscodeDevelopment
Notepad++notepadplusplusDevelopment
GitgitDevelopment
PowerShell 7+powershell-coreDevelopment
7-Zip7zipUtility
VLCvlcMedia
Windows Terminalmicrosoft-windows-terminalUtility
DiscorddiscordCommunication
SteamsteamEntertainment

What Gets Changed

  • Application installations — Each application in the $apps array is installed to its default location via Chocolatey.
  • PATH entries — Applications that include command-line tools (Git, PowerShell 7, VS Code) add entries to the system PATH.
  • Desktop shortcuts — Some packages create desktop shortcuts as part of their installation process.
  • Start menu entries — All installed applications create entries in the Start menu.
  • Log file — Creates or appends to %USERPROFILE%\Logs\EssentialAppsInstall.log.

Related Scripts