﻿---
title: Scoop Handbook
date: 2024-06-01
excerpt: Scoop is a command-line installer for Windows. This note covers directory structure, installation, common commands, updates, cleanup, and buckets.
tags:
  - Productivity
  - Microsoft
  - Windows
cover: https://assets.vluv.space/cover/Dev/Others/Scoop.webp
updated: 2026-07-08 08:16:44
lang: en
i18n:
  cn: /Scoop
  translation: 2
---

<script type="module" src="/js/components/tab.js"></script>

> Scoop is an installer
> The goal of Scoop is to let you use Unix-y programs in a normal Windows environment
> <cite>Mike Zick</cite>

[Scoop](https://scoop.sh/#/) is a Windows download and installation tool that makes it convenient to install all kinds of software.

### Directory Structure

<script type="module" src="/js/components/tree.js"></script>
<x-tree root="%USERPROFILE%\scoop">

- apps/
  - git/
    - current/
    - 2.45.1.windows.1
- buckets/
  - main/
  - extras/
- cache/
- persist/
- shims/

</x-tree>

- **Apps**: installed software or programs.
- **Buckets**: collections of apps. The `buckets` directory stores many buckets. For example, `main` is the default bucket, `extras` includes common software not included in the main bucket, and `nerdfonts` is a bucket for font apps. Each bucket is a GitHub repository that maintains many app JSON files. These JSON files store installation information for apps, including version, license, download URL, etc. These JSON files are called app manifests. Here is a simple example:

  ```json
  {
    "version": "1.0",
    "url": "https://github.com/lukesampson/cowsay-psh/archive/master.zip",
    "extract_dir": "cowsay-psh-master",
    "bin": "cowsay.ps1"
  }
  ```

- **Cache**: stores temporary downloaded files.
- **Shims**: Scoop adds this directory to the environment variable. For programs installed through Scoop, Scoop automatically generates a corresponding exe file under the Shims directory, so the program can be called directly from the command line after installation. For GUI programs, Scoop automatically adds shortcuts to the Start Menu under `C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Scoop Apps`.

### Installation

<x-tabs>

<x-tab title="Default" active>

The default installation path is `C:\Users\<YOUR USERNAME>\scoop`.

```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
```

</x-tab>

<x-tab title="Advanced">

Custom installation directory:

```shell
$ irm get.scoop.sh -outfile 'install.ps1'
$ .\install.ps1 -ScoopDir 'D:\envir_vars\scoop\' -ScoopGlobalDir 'D:\envir_vars\scoop\GlobalApps' -NoProxy
```

If Scoop is already installed and you want to migrate the directory, see [Change Directory](https://github.com/ScoopInstaller/scoop/issues/249).

To migrate apps, export JSON with `scoop export` and then import it. Directly moving source directory files will not make shims work, because they still point to the original directory.

</x-tab>

</x-tabs>

## Command

### Install & Uninstall

- `{sh} scoop search vim` searches for an app.
- `{sh} scoop install neovim` installs a specified app.
- `{sh} scoop install git@2.23.0.windows.1` installs a specified app version.
- `{sh} scoop install -g git` installs an app globally.
  Install Options:
  -g, --global Install the app globally
  -i, --independent Don't install dependencies automatically
  -k, --no-cache Don't use the download cache
  -u, --no-update-scoop Don't update Scoop before installing if it's outdated
  -s, --skip Skip hash validation (use with caution!)
  -a, --arch <32bit|64bit> Use the specified architecture, if the app supports it

---

- `{sh} scoop uninstall neovim` uninstalls a specified app.
- `{sh} scoop uninstall -p python` uninstalls an app and its configuration files.
- `{sh} scoop uninstall -g git` uninstalls a global app.

### Update

- `{sh} scoop list` List installed apps
- `{sh} scoop status` Show status and check for new app versions

  ```shell
  Name      Installed Version Latest Version Missing Dependencies Info
  ----      ----------------- -------------- -------------------- ----
  7zip      23.01             24.05
  aria2     1.36.0-1          1.37.0-1
  eza       0.18.15           0.18.16
  fastfetch 2.11.3            2.14.0
  fd        9.0.0             10.1.0
  git       2.42.0.2          2.45.1
  gitui     0.26.1            0.26.2
  kotlin    1.9.22            2.0.0
  neovim    0.9.5             0.10.0
  ```

- `{sh} scoop update` updates Scoop.
- `{sh} scoop update neovim 7zip aria2` updates specified apps.
- `{sh} scoop update *` updates all apps.
- `{sh} scoop hold/update neovim` uses `hold` to freeze certain apps, preventing them from being updated. `unhold` is the corresponding unfreeze command, removing the update restriction.

### Clean

- `{sh} scoop cleanup git` cleans old versions of a specified app.
- `{sh} scoop cleanup *` cleans old versions of all apps.
- `{sh} scoop cache rm *` cleans cached download files.

### MISC

Switch between different versions of the same program:

```powershell
scoop reset python@3.10.6
# do something
scoop reset python@3.12.3
```

- `alias` Manage scoop aliases
- `bucket` Manage Scoop buckets
- `cat` Show content of specified manifest.
- `checkup` Check for potential problems
- `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
- `home` Opens the app homepage
- `import` Imports apps, buckets and configs from a Scoopfile in JSON format
- `info` Display information about an app
- `prefix` Returns the path to the specified app
- `shim` Manipulate Scoop shims
- `virustotal` Look for app's hash or url on virustotal.com
- `which` Locate a shim/executable (similar to 'which' on Linux)

## Ref

[Scoop_Wiki](https://github.com/ScoopInstaller/Scoop/wiki)
