/install-unity

Script to install Unity 3D versions from the command line on macOS

Primary LanguageC#MIT LicenseMIT

install-unity

A command-line utility to install any recent version of Unity.

Currently only supports macOS (Intel & Apple Silicon) but support for Windows/Linux is possible, PRs welcome.

Table of Contents

Introduction

Download the latest release here. install-unity is a self-contained executable and has no dependencies.

Or you can install via Homebrew using sttz/homebrew-tap, see the tap readme for instructions.

Installing the latest release version of Unity is as simple as:

install-unity install f

Versions

Most commands take a version as input, either to select the version to install or to filter the output.

You can be as specific as you like, 2018.2.2f1, 2018.2.2, 2018.2, 2018, f or 2018.3b are all valid version inputs.

install-unity will scan for the available regular releases as well as the latest betas and alphas.

install-unity list
install-unity list a
install-unity list 2019.1

Will show the available versions and the argument acts as a filter. Without an argument, only regular releases are loaded and displayed. Add an argument including b or a to load and display either beta or both beta and alpha versions as well.

In case install-unity fails to discover a release, it's also possible to pass a release notes or unity hub url instead of a version to details and install:

install-unity details https://unity3d.com/unity/whats-new/unity-2018.3.0
install-unity install unityhub://2018.3.0f2/6e9a27477296

Packages

The command above will install the default packages as specified by Unity.

install-unity details 2018.2

Will show the available packages for a given version. You can then select the packages you want to install with the -p or --packages option. The option can either be repeated or the names separated by space or comma:

install-unity install 2018.2 --packages Unity,Documentation
install-unity install f -p Unity Linux iOS Android
install-unity install 2018.3b -p Unity -p Android -p Linux

Apple Silicon

By default, install-unity will download and install the Unity editor matching the current platform.

Use --platform macOSIntel to download and install the Intel editor on Apple Silicon.

Use --platform macOSArm on Intel to download the Apple Silicon editor.

Offline Install

install-unity can be used in a two-step process, first downloading the packages and then later installing them without needing an internet connection.

install-unity install 2018.2 --packages all --data-path "~/Desktop/2018.2" --download

Will download all available packages to ~/Desktop/Downloads together with the necessary package metadata.

install-unity install 2018.2 --pacakages all --data-path "~/Destop/2018.2" --install

Will install those packages at a later time. Simply copy the folder together with the install-unity binary to another computer to do an offline installation there.

You can download and install only a subset of the available packages.

Run

To select a Unity version from all the installed ones, use the run command.

install-unity run f

Will open the latest version of Unity installed.

You can also use the path to a Unity project and install-unity will open it with the corresponding Unity version.

install-unity run ~/Desktop/my-project

It will only open with the exact version of Unity the project is set to. You can optionally allow it to be opened with a newer patch, minor or any version:

install-unity run --allow-newer patch ~/Desktop/my-project

You can pass command line arguments along to Unity, e.g. to create a build from the command line (note the -- to separate install-unity options from the ones passed on the Unity).

install-unity run ~/Desktop/my-project -- -quit -batchmode -buildOSX64Player ~/Desktop/my-build

By default, Unity is started as a separate process and install-unity will exit after Unity has been launched. To wait for Unity to quit and forward Unity's log output through install-unity, use the --child option:

install-unity run ~/Desktop/my-project --child -v -- -quit -batchmode -buildOSX64Player ~/Desktop/my-build

Create

To start a basic Unity project, use the create command. The version pattern will select an installed Unity version and create a new project using it.

install-unity create 2020.1 ~/Desktop/my-project

The project will use Unity's default setup, including packages. Alternatively, you can create a minimal project that will start with an empty ´Packages/manifest.json`:

install-unity create --type minimal 2020.1 ~/Desktop/my-project

CLI Help

install-unity v2.12.1

USAGE: install-unity [--help] [--version] [--verbose...] [--yes] [--update] 
                     [--clear-cache] [--data-path <path>] 
                     [--opt <name>=<value>...] <action> 

GLOBAL OPTIONS:
 -h, --help       Show this help 
     --version    Print the version of this program 
 -v, --verbose    Increase verbosity of output, can be repeated 
 -y, --yes        Don't prompt for confirmation (use with care) 
 -u, --update     Force an update of the versions cache 
     --clear-cache  Clear the versions cache before running any commands 
     --data-path <path>  Store all data at the given path, also don't delete 
                  packages after install 
     --opt <name>=<value>  Set additional options. Use '--opt list' to show all 
                  options and their default value and '--opt save' to create an 
                  editable JSON config file. 


ACTIONS:

---- INSTALL (default):
     Download and install a version of Unity 

USAGE: install-unity [options] [install] [--packages <name,name>...] 
                     [--download] [--install] [--upgrade] 
                     [--platform none|mac_os|linux|windows|all] 
                     [--arch none|x86_64|arm64|all] [--redownload] [--yolo] 
                     [<version>] 

OPTIONS:
 <version>        Pattern to match Unity version or release notes / unity hub 
                  url 
 -p, --packages <name,name>  Select packages to download and install ('all' 
                  selects all available, '~NAME' matches substrings) 
     --download   Only download the packages (requires '--data-path') 
     --install    Install previously downloaded packages (requires 
                  '--data-path') 
     --upgrade    Replace existing matching Unity installation after successful 
                  install 
     --platform none|mac_os|linux|windows|all  Platform to download the 
                  packages for (only valid with '--download', default = current 
                  platform) 
     --arch none|x86_64|arm64|all  Architecture to download the packages for 
                  (default = current architecture) 
     --redownload  Force redownloading all files 
     --yolo       Skip size and hash checks of downloaded files 


---- LIST:
     Get an overview of available or installed Unity versions 

USAGE: install-unity [options] list [--installed] 
                     [--platform none|mac_os|linux|windows|all] 
                     [--arch none|x86_64|arm64|all] [<version>] 

OPTIONS:
 <version>        Pattern to match Unity version 
 -i, --installed  List installed versions of Unity 
     --platform none|mac_os|linux|windows|all  Platform to list the versions 
                  for (default = current platform) 
     --arch none|x86_64|arm64|all  Architecture to list the versions for 
                  (default = current architecture) 


---- DETAILS:
     Show version information and all its available packages 

USAGE: install-unity [options] details 
                     [--platform none|mac_os|linux|windows|all] 
                     [--arch none|x86_64|arm64|all] [<version>] 

OPTIONS:
 <version>        Pattern to match Unity version or release notes / unity hub 
                  url 
     --platform none|mac_os|linux|windows|all  Platform to show the details for 
                  (default = current platform) 
     --arch none|x86_64|arm64|all  Architecture to show the details for 
                  (default = current architecture) 


---- UNINSTALL:
     Remove a previously installed version of Unity 

USAGE: install-unity [options] uninstall [<version-or-path>] 

OPTIONS:
 <version-or-path> Pattern to match Unity version or path to installation root 


---- RUN:
     Execute a version of Unity or a Unity project, matching it to its Unity 
     version 

USAGE: install-unity [options] run [--child] 
                     [--allow-newer none|hash|build|patch|minor|all] 
                     [--upgrade <version>] <version-or-path> 
                     [<unity-arguments>...] 

OPTIONS:
 <version-or-path> Pattern to match Unity version or path to a Unity project 
 <unity-arguments> Arguments to launch Unity with (put a -- first to avoid 
                  Unity options being parsed as install-unity options) 
 -c, --child      Run Unity as a child process and forward its log output (only 
                  errors, use -v to see the full log) 
 -a, --allow-newer none|hash|build|patch|minor|all  Allow newer versions of 
                  Unity to open a project 
     --upgrade <version>  Run the project with the highest installed Unity 
                  version matching the pattern 


---- CREATE:
     Create a new empty Unity project 

USAGE: install-unity [options] create [--type <basic|minimal>] [--open] 
                     <version> <path> 

OPTIONS:
 <version>        Pattern to match the Unity version to create the project with 
 <path>           Path to the new Unity project 
     --type <basic|minimal>  Type of project to create (basic = standard 
                  project, minimal = no packages/modules) 
 -o, --open       Open the new project in the editor 

Legacy

The old Python version of install-unity can be found in the legacy branch.