/Windows_Installation_scripts

Scripts for configuring Windows and installing additional productivity software and software for development

Primary LanguagePowerShell

Getting started

Before executing any scripts be aware that you do this on your own risk and the author does not take any responsibility. All scripts were tested on Windows 11 20H2. Execute all commands in Powershell, opened in administrator mode. The command stated below will asure you have the necessary permissions to execute the installation scripts.

// Set policies to unrestricted before running the script 
Set-ExecutionPolicy Unrestricted

Next step, downloading the scripts. Feel free to examine the contents of the scripts and change whatever you want.

To execute a script, navigate to the folder where you extracted all files and just use the filename precedeed with .\. For example, .\01_Installation followed by the enter key. The installation scripts will automatically try to elevate themself to run with administrator permissons. You will get the best experience running Powershell in admin/elevated mode.

After executing all scripts, re-enable the execution policy for your own protection to prevent unwanted or malificent scripts from executing.

// Change execution policies back or keep the policy remote signed for executing unsigned local scripts and signed scripts over network
Set-ExecutionPolicy RemoteSigned

All chapters below will explain the script in more detail. For better visualization, task lists will be used.

  • enabled by default
  • disabled by default => commented out

Lists will contain copied parts from the scripts to make documenting the contents easier instead of favoring readability.

Contents

SophiaScriptWrapper.exe

A lot of the previous tweaks were removed from the scripts because of this wonderfull project. Not only adds this project lots of additional options, it also has the possibility to create different profiles with different settings.

One of the options that didn't work properly, was the WSL installation. It installed the correct Windows features, downloaded the linux distribution of choice and even looked like it was installing. Unfortunately, my system did not detect the distribution and I needed to install it again.

Even without this function, the Sophia Script has alot of nice features and good maintenance with regular updates. You can find the Sophia script repository with instructions here.

tweaks_and_packages.ps1

This script will change some basic Windows settings, remove bloatware, install features and install chocolatey with packages, further details below.

Windows configuration

  • Change Windows explorer options
  • Remove 'Music' from libraries
  • Remove 'Videos' from libraries
  • Enable mapped drive sharing between users => mapped drives will be available to new user profiles
  • Set current network profile to private (allow file sharing, device discovery, etc.)
  • Enable Remote Desktop w/o Network Level Authentication
  • Show small icons in taskbar => only Windows 10
  • Set small taskbar => Windows 11
  • Set taskbar buttons to show labels and never combine => only Windows 10
  • Always show all tray icons => only Windows 10
  • Disable search for app in store for unknown extensions
  • Hide shortcut icon arrow
  • Adjust visual effects for performance
  • Change mouse cursor to show circle when ctrl pressed
  • Show full directory path in Explorer title bar
  • Show protected operating system files
  • Uninstall Microsoft XPS Document Writer
  • Enable Windows Developer mode

Chocolatey

Chocolatey is a free utility that can help you installing packaged applications. It will make the installation of quite a few apps very easy in a manageable fashion. As a bonus it had the functionality to upgrade already installed applications/packages. List of Chocolatey packages in no particular order:

  • 7zip.install
  • adobereader
  • anaconda3
  • azure-cli
  • azure-data-studio
  • cuda
  • docker-desktop
  • eid-belgium
  • fiddler
  • fontbase
  • geforce-game-ready-driver
  • git
  • googlechrome
  • jmeter
  • jre8
  • k-litecodecpackmega
  • lastpass
  • microsoftazurestorageexplorer
  • mobaxterm
  • notepadplusplus.install
  • nvm
  • obs-move-transition
  • obs-studio
  • obs-virtualcam
  • openssl.light
  • postman
  • powertoys
  • rufus
  • sharex
  • slack
  • sourcetree
  • spotify
  • sql-server-management-studio
  • totalcommander
  • typescript
  • visualstudio2019enterprise
  • visualstudio2022enterprise
  • vscode
  • wget
  • nswagstudio
  • p4merge
  • powershell
  • whatsapp

Other installations

  • WSL2

Cleanup and reboot

  • Remove Desktop icons
  • Unpin all Start Menu tiles
  • Unpin all Taskbar icons
  • Reboot computer after installation

extensions_and_configuration.ps1

The base for our installation was set in the first script. Features were added, applications installed, bloatwere removed... Time to dot the I's and cross the T's.

Visual Studio Code extensions

  • .NET Core extension pack
  • AKS extension for debugging microservices
  • Angular extension pack
  • Azure account management
  • Azure kubernetes service
  • Azure static web apps
  • Azure tools extension pack
  • Bracket pair colorizer 2
  • Bridge to Kubernetes for debugging MicroServices
  • C# extensions (refactorings)
  • Chrome debugger
  • Colorize comments
  • Convert csharp to typescript
  • CSS peek
  • Docker extension pack
  • Draw.io integration
  • Excel viewer, opens Excel and CSV files as a table
  • Firefox debugger
  • GitLens
  • Jupyter notebooks
  • Kubernetes extension
  • Kubernetes pod file system explorer
  • Kubernetes template snippets
  • Live server
  • Live share extension pack
  • Markdown All in One
  • Markdown Preview Enhanced
  • Microsoft Edge debugger
  • Move TS, add move functionality that updates imports
  • Node Essentials
  • Node.js extension pack
  • NPM extension
  • Partial Diff
  • Paste JSON as Code
  • Powershell scripting extension
  • Prettier code formatter
  • Project manager
  • Python extension
  • Remote development pack
  • REST client
  • Settings sync, save VS code settings to github
  • Sort lines
  • SQL server extension
  • Test Explorer UI
  • Typescript extension pack
  • Visual studio codespaces
  • Visual Studio intellicode
  • XML tools
  • YAML support

WSL configuration

  • Install new WSL2 kernel
  • Add memory limitation to WSL2, default behavior could use all system memory
  • Set WSL2 as default
  • Install Ubuntu 20.04 WSL
  • Set Ubuntu 20.04 as default WSL distribution

After this script is finished and Ubuntu for WSL is installed, start Ubuntu from start menu and create an account. When finished, open Powershell and execute:

wsl --set-default ubuntu-20.04 2

Unfortunately, I could not find how to automatically enable the Ubuntu distribution in Docker to combine it with the Docker WSL2 backend. You can enable this by opening Docker Desktop => Settings => Resources => WSL integration. Enable the option Enable integration with my default WSL distro and toggle the Ubuntu distribution on in the same screen.

Tweaks

  • Set Visual Studio to automatically open in admin mode
  • Set Visual Studio Code to automatically open in admin mode
  • Set Total Commander to automatically open in admin mode
  • Create Windows Terminal Desktop Shortcut with admin priveleges

Windows Defender exclusions

Windows Defender offers great general protection to us Windows users. Unfortunately, it can get in the way when developing applications.

Excluded directories

  • Default installation paths

    • C:\Windows\Microsoft.NET
    • C:\Windows\assembly
    • C:\Program Files\dotnet
    • C:\ProgramData\Microsoft\VisualStudio\Packages
    • C:\Program Files (x86)\Microsoft SDKs\NuGetPackages
    • C:\Program Files (x86)\MSBuild
    • C:\Program Files (x86)\Microsoft Visual Studio
    • C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity
    • C:\Program Files\Microsoft VS Code
    • C:\Program Files (x86)\Microsoft SDKs
    • C:\Program Files (x86)\Windows Kits
    • C:\Program Files\Docker
  • User profile paths

    • $userPath\AppData\Roaming\npm
    • $userPath\AppData\Roaming\npm-cache
    • $userPath\AppData\Local\Microsoft\VisualStudio
    • $userPath\AppData\Local\JetBrains\Transient
    • $env:ProgramData\Docker
    • $env:ProgramData\DockerDesktop
  • Project paths => change this to your own project paths

    • C:\_sync
    • C:\_projects
    • D:\

Excluded processes

  • Visual Studio

    • vshost-clr2.exe
    • VSInitializer.exe
    • VSIXInstaller.exe
    • VSLaunchBrowser.exe
    • vsn.exe
    • VsRegEdit.exe
    • VSWebHandler.exe
    • VSWebLauncher.exe
    • XDesProc.exe
    • Blend.exe
    • CodeCoverage.exe
    • DDConfigCA.exe
    • devenv.exe
    • FeedbackCollector.exe
    • IntelliTrace.exe
    • Microsoft.VisualStudio.Web.Host.exe
    • mspdbsrv.exe
    • MSTest.exe
    • PerfWatson2.exe
    • Publicize.exe
    • QTAgent.exe
    • QTAgent_35.exe
    • QTAgent_40.exe
    • QTAgent32.exe
    • QTAgent32_35.exe
    • QTAgent32_40.exe
    • QTDCAgent.exe
    • QTDCAgent32.exe
    • StorePID.exe
    • T4VSHostProcess.exe
    • TailoredDeploy.exe
    • TCM.exe
    • testhost.exe
    • TextTransform.exe
    • TfsLabConfig.exe
    • UserControlTestContainer.exe
    • vb7to8.exe
    • VcxprojReader.exe
    • VsDebugWERHelper.exe
    • VSFinalizer.exe
    • VsGa.exe
    • VSHiveStub.exe
    • vshost.exe
    • vshost32.exe
    • vshost32-clr2.exe
    • vbcscompiler.exe
  • VS Code

    • Code.exe
  • Runtimes, build tools

    • dotnet.exe
    • mono.exe
    • mono-sgen.exe
    • java.exe
    • java64.exe
    • msbuild.exe
    • node.exe
    • node.js
    • perfwatson2.exe
    • ServiceHub.Host.Node.x86.exe
    • vbcscompiler.exe
    • nuget.exe
  • VCS

    • git.exe
    • sourcetree.exe
  • Docker

    • Docker Desktop.exe
    • DockerWatchguard.exe
    • dockerd.exe
  • Shells

    • git-bash.exe
    • bash.exe
    • powershell.exe
    • wt.exe
  • All of JetBrains stuff

    • JetBrains.EntityFramework.Runner620.exe
    • JetBrains.MsBuild.TaskEntryPoint.exe
    • JetBrains.Platform.Satellite.exe
    • JetBrains.ReSharper.Features.XamlPreview.External.exe
    • JetBrains.ReSharper.Host.exe
    • JetBrains.ReSharper.Host64.exe
    • JetBrains.ReSharper.Roslyn.Worker.exe
    • JetLauncher32.exe
    • JetLauncher32c.exe
    • JetLauncher64.exe
    • JetLauncher64c.exe
    • JetLauncherIL.exe
    • JetLauncherILc.exe
    • OperatorsResolveCacheGenerator.exe
    • PsiGen.exe
    • ReSharperTestRunner32.exe
    • ReSharperTestRunner64.exe
    • ReSharperTestRunnerIL.exe
    • RiderClrProcessEnumerator32.exe
    • RiderClrProcessEnumeratorIL.exe
    • TokenGenerator.exe
    • xamarin-component.exe
    • ClrStack.x64.exe
    • ClrStack.x86.exe
    • CsLex.exe
    • ErrorsGen.exe
    • JetBrains.Debugger.Worker.exe
    • JetBrains.Debugger.Worker32c.exe
    • JetBrains.Debugger.Worker64c.exe
    • dotPeek32.exe
    • dotPeek64.exe
    • DotTabWellScattered32.exe
    • DotTabWellScattered64.exe
    • DotTabWellScatteredIL.exe
    • JetBrains.Platform.Installer.Bootstrap.exe
    • JetBrains.Platform.Installer.Cleanup.exe
    • JetBrains.Platform.Installer.exe
    • CleanUpProfiler.x64.exe
    • CleanUpProfiler.x86.exe
    • Configuration2Xml32.exe
    • Configuration2Xml64.exe
    • ConsoleProfiler.exe
    • dotTrace32.exe
    • dotTrace64.exe
    • DotTraceLauncher.exe
    • dotTraceView32.exe
    • dotTraceView64.exe
    • JetBrains.Common.ElevationAgent.exe
    • JetBrains.Common.ExternalStorage.exe
    • JetBrains.Common.ExternalStorage.x86.exe
    • JetBrains.dotTrace.IntegrationDemo.exe
    • Reporter.exe
    • SnapshotStat.exe
    • Timeline32.exe
    • Timeline64.exe
    • dotMemory.UI.32.exe
    • dotMemory.UI.64.exe
    • dotMemoryUnit.exe
    • JetBrains.dotMemory.Console.SingleExe.exe
    • JetBrains.dotMemoryUnit.Server.exe
    • restarter.exe
    • rider64.exe
    • runnerw.exe
    • runnerw64.exe
    • WinProcessListHelper.exe
    • elevator.exe
    • fsnotifier.exe
    • fsnotifier64.exe
    • launcher.exe
    • NGen Rider Assemblies.exe
    • idea.exe
    • idea64.exe
    • JetBrains.Etw.Collector.Host.exe
    • webstorm64.exe
    • datagrip64.exe
    • clion64.exe
    • goland64.exe
    • phpstorm64.exe
    • pycharm64.exe
    • rubymine64.exe
    • studio64.exe
  • JB Toolbox

    • jetbrains-toolbox.exe
    • jetbrains-toolbox-cef.exe
    • jetbrains-toolbox-cef-helper.exe
  • Unity

    • UnityHelper.exe
    • Unity.exe
    • UnityShaderCompiler.exe
    • UnityYAMLMerge.exe
    • UnityCrashHandler64.exe'

WSL specific exclusions

Special thanks to Noel Bundick for this script. This will stop Windows Defender from scanning WSL files. Scanning WSL files often gives false positives and, at the moment, does not offer any security for Linux systems.

Install and select Node version

NVM (Node Version Manager) will be installed in the 1st script. This application will give you the possibility to install and switch between different Node versions. By default the script will install the latest version (Non-LTS). It is possible to install versions by executing NVM install [version number here].