Project_WL/.claude/skills/unity-cli/references/editors-install.md

14 KiB

Editors, install & modules — unity-cli command reference

Part of the unity-cli skill. See that skill's SKILL.md for CLI install, global flags, environment variables, exit codes, and common workflows. All global flags (--format json, --non-interactive, --yes, --proxy, …) apply to every command below.


Editors — list, install, uninstall

# List all editors (installed + available releases)
# Short alias: unity e. The bare `unity editors` is shorthand for the explicit `unity editors list` (matches projects/templates/modules)
unity editors list --format json

# List only installed editors
# As of 0.1.0-beta.8 the --installed table includes an "Upgrade to" column flagging editors with a newer patch in their line
unity editors --installed --format json

# List only available releases
unity editors --releases --format json

# Filter by architecture
unity editors --installed --architecture arm64 --format json

# Show detailed module info
unity editors --verbose

# Watch mode — live-updates as editors are installed or removed
unity editors --watch
unity editors --installed --watch

unity editors honors --format tsv and --format ndjson for its default listing. Identifier columns keep their natural width even if the table exceeds the terminal — they are no longer silently truncated.

editors running

List the Unity Editor instances currently running and the project each has open, with the editor version and process id per instance:

unity editors running
unity editors running --format json

Detection is cross-platform (process table plus each project's Pipeline lockfile), and the version falls back to a project's ProjectSettings/ProjectVersion.txt for editors without the Pipeline package. An empty list is a normal result (exit 0). Honors the global --format human|json|tsv|ndjson (and --json).

editors add

Register one or more existing editor installations by path:

unity editors add /path/to/Unity/Editor

# Register multiple at once
unity editors add /path/one /path/two

# Skip macOS code-signature check (useful for unsigned or side-loaded builds)
unity editors add /path/to/Unity/Editor --skip-signature-check

editors default

# Show current default editor
unity editors default --format json

# Set default by version, alias, or keyword
unity editors default 6000.0.47f1
unity editors default latest
unity editors default lts

# Clear the default
unity editors default --unset

On a TTY with no arguments, shows an interactive selection prompt.

editors path

# Print the install directory of an installed editor (local, offline — no release-feed fetch)
unity editors path 6000.0.47f1
unity editors path 6000.0.47f1 --architecture arm64 --json

Honors --architecture and --format / --json, and reports ambiguous matches so you can narrow by version or architecture.

editors install-path

# Show the directory where editors are installed
unity editors install-path

# Set a new install path
unity editors install-path --set /path/to/editors

Also available as the top-level unity install-path (with an additional --get flag). Distinct from editors path: install-path gets/sets the root install directory; editors path prints the install directory of one editor version.

editors info

# Show release details for a specific version
unity editors info 6000.0.47f1 --format json

editors upgrade

New in 0.1.0-beta.8. Upgrade an installed editor to the newest official (f-channel) patch in the same major.minor line (e.g. 2022.3.10f12022.3.62f1), carrying the installed modules over. The [editor] argument accepts an exact version, a major.minor line, or the latest / lts / default aliases. Editors install side by side — the old version is kept unless --replace (alias --remove-old) is passed.

# Upgrade a specific editor (or the default / lts / latest) to the newest patch in its line
unity editors upgrade 2022.3.10f1
unity editors upgrade lts

# Upgrade every installed editor that has a newer patch
unity editors upgrade --all --yes --accept-eula

# Report current → target without installing (--check is an alias for --dry-run)
unity editors upgrade --all --dry-run --format json

# Remove the old editor after a successful upgrade; skip carrying modules; add extra modules
unity editors upgrade 2022.3.10f1 --replace --yes
unity editors upgrade 2022.3.10f1 --no-modules
unity editors upgrade 2022.3.10f1 --module android --module ios

editors prune

Finds installed editors that no registered project uses and, optionally, uninstalls them. Report-only by default — it never deletes anything unless you pass --remove.

# Report only: which editors are unused, and how much they'd reclaim
unity editors prune

# Uninstall the unused editors (prompts to confirm)
unity editors prune --remove

# Non-interactive: --yes is REQUIRED alongside --remove in a script or CI
unity editors prune --remove --yes

# Machine output
unity editors prune --format json

The report lists version, architecture, path, size, and status, then the total reclaimable size. With --remove in a non-interactive shell and no -y, --yes, it refuses rather than deleting unprompted. "Unused" is judged against the project registry (unity projects list), so an editor used only by a project you never registered counts as unused — register it first, or verify with unity editors prune before adding --remove.

editors verify

Structurally verifies an installed editor: checks that its files and modules are actually present on disk. It's the command to reach for when an editor launches oddly, a module seems half-installed, or a download was interrupted.

# Verify an installed editor
unity editors verify 6000.1.0f1

# Disambiguate when the same version is installed for two architectures
unity editors verify 6000.1.0f1 --architecture arm64

# Machine output
unity editors verify 6000.1.0f1 --json

Reports each component as ok, missing, or skipped, and names the exact unity install-modules command to repair anything missing. A clean editor exits 0; missing or empty files fail the check. This is a structural check — it confirms files exist, not that they are uncorrupted or correctly signed. --architecture is inherited from the editors parent, so unity editors --architecture arm64 verify <version> works too.

editors module / editor module

Module management is exposed under both editors module and the editor (singular) command group. Both share the same subcommands:

# List modules for an installed editor
unity editors module list 6000.0.47f1 --format json
unity editor module list 6000.0.47f1 --architecture arm64 --format json

# Add modules to an installed editor
unity editors module add 6000.0.47f1 --module android --module ios
unity editors module add 6000.0.47f1 --all          # Install every available module
unity editors module add 6000.0.47f1 --module android --child-modules   # Include child modules
unity editors module add 6000.0.47f1 --module android --accept-eula      # Accept EULAs automatically

# Remove installed modules from an editor by id (-m/--module, repeatable)
unity editors module remove 6000.0.47f1 --module android --module ios
unity editor module remove 6000.0.47f1 -m android -a arm64   # disambiguate side-by-side installs
unity editors module remove 6000.0.47f1 -m android --yes     # skip the confirm prompt (required non-interactively)

# Refresh module list for a manually located editor
unity editors module refresh 6000.0.47f1

module remove prompts to confirm before deleting the module files; -y / --yes skips the prompt and is required in non-interactive mode. Supports -a / --architecture to disambiguate side-by-side installs and the global --format human|json|tsv|ndjson.

editor add (single path, with module-fetch control)

The editor add subcommand is similar to editors add but targets a single path and supports skipping the module-fetch step:

unity editor add /path/to/Unity/Editor

# Skip fetching module metadata (faster, but modules won't be listed until refreshed)
unity editor add /path/to/Unity/Editor --no-fetch-modules

Install

# Install an editor (interactive version selection if omitted)
unity install 6000.0.47f1

# Install with specific modules
unity install 6000.0.47f1 --module windows-mono --module android

# Install a specific changeset by hash
unity install 6000.0.47f1 --changeset abc123def456

# Include child modules
unity install 6000.0.47f1 --cm

# Exclude child modules
unity install 6000.0.47f1 --no-cm

# Install and accept EULAs automatically (CI)
unity install 6000.0.47f1 --yes --accept-eula

# Force reinstall even if already present
unity install 6000.0.47f1 --force

# Resume an interrupted download (also recovers orphaned partials left by a crash or kill)
unity install 6000.0.47f1 --resume

# Dry-run: show what would be installed without doing it
unity install 6000.0.47f1 --dry-run --format json

# List the editor's available modules and exit without installing
# (a drop-in alias for `unity modules list <version>`)
unity install 6000.0.47f1 --list-components --format json

# Space-separated module values after a single -m are equivalent to repeating -m
unity install 6000.0.47f1 -m android ios          # space-separated
unity install 6000.0.47f1 -m android -m ios       # repeated flag (same effect)

# Windows: keep the install service unelevated. The Editor's NSIS installer is manifested
# `highestAvailable`, so it runs unelevated for a STANDARD user (the supported unprivileged
# install — it reports any dependencies an admin must finish) but still asks for elevation on
# demand under an administrator account. In CI, where a prompt can't be answered, run the
# agent elevated instead. Also via UNITY_NO_ELEVATE=1.
unity install 6000.0.47f1 --no-elevate --yes --accept-eula

When installing an editor with several modules, a failed module no longer aborts the whole batch — unity install (and unity install-modules) continue with the remaining items and exit non-zero if any failed. Each editor and module is listed as installed (✓), failed (✗), or pending (·); the NDJSON result frame carries the same breakdown as an items array (each entry has uid, name, kind, status), so scripts can tell exactly which modules succeeded even on a non-zero exit.

NDJSON progress frames for unity install and unity install-modules include a phase: 'download' | 'install' field so scripts can switch to an indeterminate spinner during the install phase (which is genuinely indeterminate — NSIS on Windows only reports success/failure). During the install phase, pct is locked at 50 and only jumps to 100 on completion. Module download/install progress is nested under the parent editor via parentItemUid, so consumers see one editor group with its modules rather than one group per module.

On an interactive terminal, unity install also reports progress to the terminal application itself via the OSC 9;4 escape sequence — on Windows Terminal the taskbar icon fills with download/install progress and spinners show as indeterminate, so you don't need to keep the window focused. It's emitted only on a TTY (never in piped or machine-consumed output), always cleared on exit, and ignored by terminals that don't support it.

Module installers honor the per-module install command from the release manifest (e.g. Visual Studio on Windows uses --passive, not /S); the resolved command is surfaced in unity modules list --json. unity install self-heals a corrupted partial download by discarding the bad partial and re-downloading; a cross-process install lock prevents two concurrent installs of the same version from corrupting the unpack.

Uninstall

# Uninstall an editor version
unity uninstall 6000.0.47f1 --yes

# Uninstall a specific architecture
unity uninstall 6000.0.47f1 --architecture arm64 --yes

Modules — add/list per editor

# List modules for an installed editor
unity modules list 6000.0.47f1 --format json

# Filter by architecture
unity modules list 6000.0.47f1 --architecture arm64 --format json

unity modules list honors --format ndjson (empty results emit a clean, empty NDJSON stream).

install-modules

# List available modules without installing
unity install-modules --editor-version 6000.0.47f1 --list

# Install specific modules
unity install-modules --editor-version 6000.0.47f1 --module android --module ios

# Install all available modules
unity install-modules --editor-version 6000.0.47f1 --all --yes

# Include child modules (default behaviour)
unity install-modules --editor-version 6000.0.47f1 --module android --cm

# Exclude child modules
unity install-modules --editor-version 6000.0.47f1 --module android --no-cm

# Accept EULAs and dry-run
unity install-modules --editor-version 6000.0.47f1 --all --accept-eula --dry-run

# Reinstall modules that are already installed (a repair)
unity install-modules --editor-version 6000.0.47f1 --module android --reinstall

# -f/--force implies --reinstall, auto-includes child modules, and skips confirmation prompts
unity install-modules --editor-version 6000.0.47f1 --module android --force

# Tune the automatic retry for modules whose download/validation fails intermittently
# (default retries twice with backoff; 0 disables). Also via UNITY_INSTALL_RETRIES.
unity install-modules --editor-version 6000.0.47f1 --module android --retries 3
unity install-modules --editor-version 6000.0.47f1 --module android --retries 0

# Windows: skip the elevated (UAC) install helper (also via UNITY_NO_ELEVATE=1)
unity install-modules --editor-version 6000.0.47f1 --module android --no-elevate

--list and --all are mutually exclusive. --list is also mutually exclusive with --module.

A module whose download or validation fails intermittently — common for large modules such as Android SDK/NDK and OpenJDK — is retried automatically (up to twice with exponential backoff by default) instead of failing the whole run; already-installed modules are never re-downloaded, and retry attempts surface in both human and --format ndjson output.

--module android ios (space-separated values after a single --module) and --module android --module ios (repeated flag) are equivalent — both install all listed modules.

Module discovery works for editors registered via unity editors add <path> (located editors), not just editors installed by the Hub.