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.
- Getting started
- Contents
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.
This script will change some basic Windows settings, remove bloatware, install features and install chocolatey with packages, further details below.
- 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 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
- WSL2
- Remove Desktop icons
- Unpin all Start Menu tiles
- Unpin all Taskbar icons
- Reboot computer after installation
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.
- .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
- 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.
- 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 offers great general protection to us Windows users. Unfortunately, it can get in the way when developing applications.
-
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:\
-
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'
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.
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].