Having been used to the convenience of using Homebrew to install software packages on Mac, I recently installed a Windows system on my company’s computer and wanted to set it up similarly. The solution is Scoop, which I am recommending today.

Scoop is an open-source project that primarily uses commands to install Windows software packages. It effectively avoids permission pop-ups, hides GUI wizard installations, automatically finds and installs dependencies, and automates the installation process.

Official website: https://scoop.sh/

Open-source project address: https://github.com/ScoopInstaller/Scoop

Additionally, Scoop packages can be part of a git repository, commonly referred to as buckets. You can view these buckets on GitHub at https://scoop.sh/#/buckets. You can also easily create your own buckets.

Environment Preparation

  • Windows 10 Pro 19044.1586
  • Latest version of PowerShell or Windows PowerShell 5.1
  • The PowerShell execution policy must be one of the following: Unrestricted, RemoteSigned, or ByPass.

Installing Scoop

Run this command from a non-admin PowerShell to install Scoop with the default configuration. Scoop will be installed in C:\Users\<YOUR USERNAME>\scoop.

During installation, you may be prompted to change the policy:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
PS C:\Users\wnote> iwr -useb get.scoop.sh | iex
Initializing...
PowerShell requires an execution policy in [Unrestricted, RemoteSigned, ByPass] to run Scoop. For example, to set the execution policy to 'RemoteSigned' please run 'Set-ExecutionPolicy RemoteSigned -Scope CurrentUser'.
Abort.
PS C:\Users\wnote> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser                                                 
Execution Policy Change
The execution policy helps prevent running untrusted scripts. Changing the execution policy might expose you to security risks. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170
Do you want to change the execution policy?
[Y] Yes(Y)  [A] Yes to All(A)  [N] No(N)  [L] No to All(L)  [S] Suspend(S)  [?] Help (default is "N"): Y
PS C:\Users\tarena> iwr -useb get.scoop.sh | iex
Initializing...
Downloading ...
Creating shim...
Adding ~\scoop\shims to your path.
Scoop was installed successfully!
Type 'scoop help' for instructions.

PS C:\Users\tarena> scoop update
Updating Scoop...
Updating 'main' bucket...
Scoop was updated successfully!

If your network cannot connect to the official address, you can add a proxy:

1
irm get.scoop.sh -Proxy 'http://<ip:port>' | iex

For those who do not want to install to the default path, you can specify a custom path. Refer to install.ps1 at https://github.com/ScoopInstaller/Install/blob/master/install.ps1:

1
.\install.ps1 -ScoopDir 'D:\Applications\Scoop' -ScoopGlobalDir 'F:\GlobalScoopApps' -NoProxy

Switching to a Domestic Source

There are several domestic sources available online: https://gitee.com/squallliu/scoop https://gitee.com/glsnames/scoop-installer

1
2
3
iwr -useb https://gitee.com/glsnames/scoop-installer/raw/master/bin/install.ps1 | iex
scoop config SCOOP_REPO https://gitee.com/glsnames/scoop-installer
scoop update

Installing Software Packages

1
2
3
4
5
6
7
8
scoop install kubectl 
scoop install helm 
scoop install wget 
scoop install curl 
scoop install 7zip 
scoop install aria2 
scoop install sudo 
scoop install -g extras/windows-terminal

If the installation gets stuck, consider configuring a proxy:

1
2
scoop config proxy 127.0.0.1:18080 # Set HTTP proxy
scoop config rm proxy # Remove proxy

Configuring the Multi-threaded Download Tool Aria2

1
2
3
4
5
6
scoop config aria2-enabled false
scoop config aria2-warning-enabled false
scoop config aria2-retry-wait 4
scoop config aria2-split 16
scoop config aria2-max-connection-per-server 16
scoop config aria2-min-split-size 4M

Common Scoop Commands

1
2
3
4
scoop install "app name" # Install a package
scoop list # List installed packages
scoop status # Check for updates
scoop config # View configuration

Reference: https://github.com/ScoopInstaller/Install