Table of Contents
What's Scoop?
Scoop is a free and open source command line installer for Windows based systems. If you are a command line lover or a Linux user who recently switched to windows then this is the tool you would like to use to manage your programs and plugins in the System.
Scoop is a command-line installer for Windows. Scoop installs programs from the command line with a minimal amount of friction. It:
- Eliminates permission popup windows
- Hides GUI wizard-style installers
- Prevents PATH pollution from installing lots of programs
- Avoids unexpected side-effects from installing and uninstalling programs
- Finds and installs dependencies automatically
- Performs all the extra setup steps itself to get a working program
Scoop is very scriptable, so you can run repeatable setups to get your environment just the way you like.
Installing Scoop Windows Package Manager
Before using Scoop, you need to install it on your Windows machine:
1. Make sure you have allowed PowerShell to execute local scripts. Unrestricted will work too, but it is less secure. So stick with RemoteSigned if you’re not sure.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
2. Run this command from a non-admin PowerShell to install scoop with default configuration, scoop will be installed to C:\Users\<YOUR USERNAME>\scoop.
irm get.scoop.sh | iex
Installation under the administrator console has been disabled by default for security considerations. If you know what you are doing and want to install Scoop as administrator. Please download the installer and manually execute it with the -RunAsAdmin parameter in an elevated console. Here is the example:
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
3. You can check for all available scoop instructions by using scoop help command as shown below. This will show all the available commands with description in summary.
PS C:\> scoop
Usage: scoop <command> [<args>]
Available commands are listed below.
Type 'scoop help <command>' to get more help for a specific command.
Command Summary
------- -------
alias Manage scoop aliases
bucket Manage Scoop buckets
cache Show or clear the download cache
cat Show content of specified manifest.
checkup Check for potential problems
cleanup Cleanup apps by removing old versions
config Get or set configuration values
create Create a custom app manifest
depends List dependencies for an app, in the order they'll be installed
download Download apps in the cache folder and verify hashes
export Exports installed apps, buckets (and optionally configs) in JSON format
help Show help for a command
hold Hold an app to disable updates
home Opens the app homepage
import Imports apps, buckets and configs from a Scoopfile in JSON format
info Display information about an app
install Install apps
list List installed apps
prefix Returns the path to the specified app
reset Reset an app to resolve conflicts
search Search available apps
shim Manipulate Scoop shims
status Show status and check for new app versions
unhold Unhold an app to enable updates
uninstall Uninstall an app
update Update apps, or Scoop itself
virustotal Look for app's hash or url on virustotal.com
which Locate a shim/executable (similar to 'which' on Linux)
What sort of apps can Scoop install?
The apps that install best with Scoop are commonly called “portable” apps: i.e. compressed program files that run stand-alone when extracted and don’t have side-effects like changing the registry or putting files outside the program directory.
Since installers are common, Scoop supports them too (and their uninstallers).
Scoop downloads and manages packages in a portable way, keeping them neatly isolated in ~\scoop. It won’t install files outside its home, and you can place a Scoop installation wherever you like.
Get-ChildItem ~\scoop
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/10/2024 3:55 AM apps
d----- 1/9/2024 10:18 PM buckets
d----- 1/10/2024 3:56 AM cache
d----- 1/9/2024 10:19 PM persist
d----- 1/10/2024 3:55 AM shims
Finding and Installing Packages with Scoop
Scoop buckets
Now that you have a package manager, you may wonder what to install via Scoop. Luckily, Scoop lets you search packages available to install with the bucket command.
The bucket command lists all repositories (or buckets) containing Scoop packages. These buckets are like the package repositories used in Linux that contain a list of available packages and their dependencies.
To find and install packages with Scoop. Run the below scoop command to list locally available buckets.
scoop bucket list
The output below indicates that the main bucket contains 1268 packages you can install. Each Scoop bucket has manifest files, which are updated periodically to add new packages and remove old ones. These files describe how to install a package and its dependencies.
Name Source Updated Manifests
---- ------ ------- ---------
main ~\scoop\buckets\main 1/10/2024 8:04:58 PM 1268
The list of all Scoop buckets on GitHub can be browsed here.
The following buckets are known to scoop:
- main – Default bucket for the most common (mostly CLI) apps
- extras – Apps that don’t fit the main bucket’s criteria
- games – Open source/freeware games and game-related tools
- nerd-fonts – Nerd Fonts
- nirsoft – Almost all of the 250+ apps from Nirsoft
- sysinternals – Sysinternals Suite and all individual application from Microsoft
- java – A collection of Java development kits (JDKs), Java runtime engines (JREs), Java’s virtual machine debugging tools and Java based runtime engines.
- nonportable – Non-portable apps (may require UAC)
- php – Installers for most versions of PHP
- versions – Alternative versions of apps found in other buckets
Many other application buckets hosted on GitHub can be found in the Scoop Directory or via other search engines.
Now, run the command below to search for a specific package, like 7zip, in all available buckets
scoop search 7zip
The output below shows two packages that match the search term 7zip (7zip and 7zip19.00-helper) from the main bucket. You can also see the version number of each package.
Name Version Source Binaries
---- ------- ------ --------
7zip 23.01 main
7zip19.00-helper 19.00 main
Once you’ve found a package, run the following command to install the 7zip package
scoop install 7zip
At this point, 7zip should be installed and ready to use! Did you notice you don’t need to click through multiple buttons to install a program? Installing programs eliminates permission pop-ups. With Scoop, a one-liner command is enough to install as long as you know the package’s name.
Installing '7zip' (23.01) [64bit] from main bucket
7z2301-x64.msi (1.8 MB) [=========================================================] 100%
Checking hash of 7z2301-x64.msi ... ok.
Extracting 7z2301-x64.msi ... done.
Linking ~\scoop\apps\7zip\current => ~\scoop\apps\7zip\23.01
Creating shim for '7z'.
Creating shim for '7zFM'.
Creating shim for '7zG'.
Creating shortcut for 7-Zip (7zFM.exe)
Persisting Codecs
Persisting Formats
Running post_install script...
'7zip' (23.01) was installed successfully!
Notes
-----
Add 7-Zip as a context menu option by running:
"C:\Users\admin\scoop\apps\7zip\current\install-context.reg"
Now, trying to search the Firefox package for installation. And from the output, we can see it is not available in the main bucket. The bucket contains Firefox is extras.
scoop search firefox
Results from other known buckets...
(add them using 'scoop bucket add <bucket name>')
Name Source
---- ------
firefox-eme-free extras
firefox-esr extras
firefox extras
firefoxpwa extras
firefoxdownloadsview nirsoft
firefox-beta versions
firefox-developer versions
firefox-nightly versions
If you try to install it, you will get the following error message. Because the bucket manifest is not available on your computer.
PS C:\> scoop install firefox
Couldn't find manifest for 'firefox'.
To add a bucket, run the following command:
scoop bucket add extras
Checking repo... OK
The extras bucket was added successfully.
Get the list of all local buckets and you should see the extras bucket contains 1892 packages.
PS C:\> scoop bucket list
Name Source Updated Manifests
---- ------ ------- ---------
extras https://github.com/ScoopInstaller/Extras 1/10/2024 7:30:18 PM 1892
main ~\scoop\buckets\main 1/10/2024 8:04:58 PM 1268
Once the bucket has been added, the Firefox should be installed without any issues.
scoop install firefox
Installing 'firefox' (121.0.1) [64bit] from extras bucket
Firefox%20Setup%20121.0.1.exe (57.5 MB) [===================================================] 100%
Checking hash of Firefox%20Setup%20121.0.1.exe ... ok.
Extracting dl.7z ... done.
Linking ~\scoop\apps\firefox\current => ~\scoop\apps\firefox\121.0.1
Creating shim for 'firefox'.
Creating shortcut for Firefox (firefox.exe)
Creating shortcut for Firefox Profile Manager (firefox.exe)
Persisting distribution
Persisting profile
Running post_install script...
'firefox' (121.0.1) was installed successfully!
Notes
-----
To set profile 'Scoop' as *DEFAULT*, or profiles/settings was lost after update:
- Run 'Firefox Profile Manager', choose 'Scoop' then click 'Start Firefox'.
- Visit 'about:profiles' page in Firefox to check *DEFAULT* profile.
For details:
https://support.mozilla.org/en-US/kb/profile-manager-create-remove-switch-firefox-profiles
Another example of installing a package in an external bucket.
PS C:\> scoop search zoomit
Results from other known buckets...
(add them using 'scoop bucket add <bucket name>')
Name Source
---- ------
zoomit sysinternals
PS C:\> scoop bucket add sysinternals
Checking repo... OK
The sysinternals bucket was added successfully.
PS C:\> scoop bucket list
Name Source Updated Manifests
---- ------ ------- ---------
extras https://github.com/ScoopInstaller/Extras 1/10/2024 7:30:18 PM 1892
main ~\scoop\buckets\main 1/10/2024 8:04:58 PM 1268
sysinternals https://github.com/niheaven/scoop-sysinternals 1/10/2024 3:27:34 AM 75
PS C:\> scoop install zoomit
Installing 'zoomit' (7.2) [64bit] from sysinternals bucket
ZoomIt.zip (1.2 MB) [=======================================================================] 100%
Checking hash of ZoomIt.zip ... ok.
Extracting ZoomIt.zip ... done.
Linking ~\scoop\apps\zoomit\current => ~\scoop\apps\zoomit\7.2
Creating shim for 'ZoomIt'.
Creating shortcut for SysInternals/ZoomIt (ZoomIt64.exe)
'zoomit' (7.2) was installed successfully!
In some cases, you plan to install multiple packages at once. Scoop lets you install multiple packages specified and separated by spaces. This feature is helpful when you already have a list of packages to install.
scoop install zoom discord brave microsoft-teams
Get the list of installed packages:
scoop list
Installed apps:
Name Version Source Updated Info
---- ------- ------ ------- ----
7zip 23.01 main 2024-01-10 20:12:53
brave 1.61.114 extras 2024-01-10 20:38:27
discord 1.0.9028-17 extras 2024-01-10 20:38:41
firefox 121.0.1 extras 2024-01-10 20:41:12
git 2.43.0 main 2024-01-10 20:25:12
microsoft-teams 1.6.00.33567 extras 2024-01-10 20:39:22
zoom 5.17.2.29988 extras 2024-01-10 20:39:35
Updating Packages with Scoop
Keeping your packages updated is one way to keep your system healthy. Once your package is installed, Scoop helps you get the latest features or bug fixes.
You can check for any latest available versions and current status by using scoop status command as shown below. This will download the latest version of scoop and update the local app manifests.
PS C:\> scoop status
WARN Scoop out of date. Run 'scoop update' to get the latest changes.
PS C:\> scoop update
Updating Scoop...
Updating 'extras' bucket...
Updating 'main' bucket...
Converting 'main' bucket to git repo...
Checking repo... OK
The main bucket was added successfully.
Updating 'sysinternals' bucket...
Scoop was updated successfully!
After you update Scoop, you can update individual apps or update all your installed apps, you can run:
scoop update 7zip
scoop update *
Once you are done using scoop, you can choose to remove it along with all the programs that you have installed through scoop by just running scoop uninstall scoop command as shown below.
scoop uninstall scoop
WARN This will uninstall Scoop and all the programs that have been installed with Scoop!
Are you sure? (yN): y
Removing ~\scoop\shims from your path.
Scoop has been uninstalled.
Adding Extra Bucket and Installing Multiple Versions of a Package
As you’ve seen, Scoop installs packages from buckets. And by default, Scoop comes with a handful of useful buckets such as main, versions, and extras.
If you wish to install packages from other buckets beside the main one, you must configure Scoop to know about the bucket. Run the following scoop command to list known available buckets by the community.
PS C:\> scoop bucket known
main
extras
versions
nirsoft
sysinternals
php
nerd-fonts
nonportable
java
games
Next, run the below command to add the java bucket.
scoop bucket add java
Checking repo... OK
The java bucket was added successfully.
PS C:\> scoop bucket list
Name Source Updated Manifests
---- ------ ------- ---------
extras https://github.com/ScoopInstaller/Extras 1/10/2024 9:18:07 PM 1892
java https://github.com/ScoopInstaller/Java 1/8/2024 3:19:27 PM 267
main ~\scoop\buckets\main 1/10/2024 8:54:00 PM 1268
After adding a new bucket, you can now install packages with Scoop from that bucket. Now, run the command below to install the openjdk package from the java bucket. This command installs the latest version of openjdk (v21 at this time of writing). This package is an open-source implementation of the Java Platform, Standard Edition. Many programs require Java to run, so installing it is a good idea.
PS C:\> scoop install openjdk
Installing 'openjdk' (21.0.1-12) [64bit] from java bucket
openjdk-21.0.1_windows-x64_bin.zip (191.9 MB) [==========================================] 100%
Checking hash of openjdk-21.0.1_windows-x64_bin.zip ... ok.
Extracting openjdk-21.0.1_windows-x64_bin.zip ... done.
Linking ~\scoop\apps\openjdk\current => ~\scoop\apps\openjdk\21.0.1-12
'openjdk' (21.0.1-12) was installed successfully!
Note that you can also install a different version of Java by specifying the package’s version, as shown below. This command allows multiple versions of Java to be installed on your system.
PS C:\> scoop install openjdk18
Installing 'openjdk18' (18.0.2.1-1) [64bit] from java bucket
openjdk-18.0.2.1_windows-x64_bin.zip (179.2 MB) [======================================] 100%
Checking hash of openjdk-18.0.2.1_windows-x64_bin.zip ... ok.
Extracting openjdk-18.0.2.1_windows-x64_bin.zip ... done.
Linking ~\scoop\apps\openjdk18\current => ~\scoop\apps\openjdk18\18.0.2.1-1
'openjdk18' (18.0.2.1-1) was installed successfully!
Switching Between Package Versions
Perhaps you’ve installed different versions of Java, as previously demonstrated. But suppose you have one program that requires Java 21 and another that requires Java 18. How do you switch between those versions?
Worry not! Scoop supports switching different versions of the same package with the reset command.
Run the following java command to check the current active Java –version.
PS C:\> java --version
openjdk 21.0.1 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
Run the below reset command to switch to Java 18 (openjdk18).
PS C:\> scoop reset openjdk18
Resetting openjdk18 (18.0.2.1-1).
Linking ~\scoop\apps\openjdk18\current => ~\scoop\apps\openjdk18\18.0.2.1-1
Below, you can see that Java 18 is the one currently active.
PS C:\> java --version
openjdk 18.0.2.1 2022-08-18
OpenJDK Runtime Environment (build 18.0.2.1+1-1)
OpenJDK 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)
Now, run the following command to switch back to the latest package version (openjdk).
PS C:\> scoop reset openjdk
Resetting openjdk (21.0.1-12).
Linking ~\scoop\apps\openjdk\current => ~\scoop\apps\openjdk\21.0.1-12
PS C:\> java --version
openjdk 21.0.1 2023-10-17
OpenJDK Runtime Environment (build 21.0.1+12-29)
OpenJDK 64-Bit Server VM (build 21.0.1+12-29, mixed mode, sharing)
Conclusion
Installing and managing packages doesn’t have to be a complex task. Luckily, you’ve learned how to install use Scoop in Windows for more convenient package management. You’ve realized that installing and keeping different versions of the same package is possible with Scoop.