easy-install is a cross-platform command-line tool designed to effortlessly install binaries from GitHub releases and other sources. It can be easily installed using winget on Windows, making it accessible for users across different platforms.
Key Features:
Install binaries directly from GitHub releases with ease.
Automatic platform detection ensures the correct binary selection.
Supports multiple archive formats such as zip, tar.gz, and tar.xz.
Custom installation directories allow flexible setup according to user preferences.
Proxy support accommodates restricted network environments.
Self-upgrade functionality keeps the tool current with minimal effort.
Audience & Benefit:
Ideal for developers and IT professionals seeking to streamline their software installation processes across various platforms. It simplifies workflows by automating the download and setup of executables, reducing manual intervention and saving valuable time.
README
Easy Install
A cross-platform command-line tool for effortlessly installing binaries from GitHub releases and other sources. Simplify your workflow by downloading and setting up executables with a single command.
Features
š Install binaries directly from GitHub releases
šÆ Automatic platform detection and binary selection
š¦ Support for multiple archive formats (zip, tar.gz, tar.xz, etc.)
š§ Custom installation directories
š Proxy support for restricted networks
š Manifest-based installations for complex packages
š Version-specific or latest release installation
š¾ Automatic PATH configuration
āļø Persistent configuration management
ā±ļø Configurable network timeouts
šļø Binary optimization with strip and UPX compression
# Direct installation
curl -fsSL https://raw.githubusercontent.com/easy-install/easy-install/main/install.sh | sh
# wget
wget -qO- https://raw.githubusercontent.com/easy-install/easy-install/main/install.sh | sh
# Using proxy (for restricted networks)
curl -fsSL https://gh-proxy.com/https://raw.githubusercontent.com/easy-install/easy-install/main/install.sh | sh
# Using CDN
curl -fsSL https://cdn.jsdelivr.net/gh/easy-install/easy-install/install.sh | sh
# Using xget proxy
curl -fsSL https://xget.xi-xu.me/gh/easy-install/easy-install/raw/refs/heads/main/install.sh | sh -s -- --proxy xget
# Using gh-proxy
curl -fsSL https://gh-proxy.com/https://github.com/easy-install/easy-install/blob/main/install.sh | sh -s -- --proxy gh-proxy
# Using ei-assets mirror (more proxy options available)
curl -fsSL https://cdn.jsdelivr.net/gh/ahaoboy/ei-assets/install.sh | sh -s -- --proxy jsdelivr
Cargo (Rust)
# Install from crates.io
cargo install easy-install
# Install using cargo-binstall
cargo binstall easy-install
# Install from GitHub
cargo install --git https://github.com/easy-install/easy-install.git
npm/pnpm/yarn
npm install -g @easy-install/easy-install
# or
pnpm add -g @easy-install/easy-install
# or
yarn global add @easy-install/easy-install
Usage
Basic Installation
# Install the latest release from a GitHub repository
ei https://github.com/ahaoboy/mujs-build
# Install a specific version
ei https://github.com/ahaoboy/mujs-build/releases/tag/v0.0.1
# Short syntax for GitHub repositories
ei yt-dlp/yt-dlp
# Specify target platform
ei https://github.com/ahaoboy/mujs-build --target x86_64-pc-windows-gnu
# Set a custom alias for the installed binary
ei https://github.com/ip7z/7zip/releases/tag/25.01 --alias 7z
# Install specific binary from a multi-binary package
ei https://github.com/quickjs-ng/quickjs --alias=qjs
# Install from a direct download URL
ei https://github.com/denoland/deno/releases/download/v2.1.1/deno-x86_64-pc-windows-msvc.zip
ei https://github.com/denoland/deno/releases/latest/download/deno-x86_64-pc-windows-msvc.zip
# Install without adding to PATH
ei https://github.com/quickjs-ng/quickjs --install-only
# Optimize binary with strip and UPX compression
ei https://github.com/boa-dev/boa --strip --upx
CLI Reference
Below is the full list of arguments and options accepted by ei:
USAGE:
ei [OPTIONS] [URL] [COMMAND]
Arguments
Argument
Description
[URL]
GitHub repo (owner/repo), release URL, or artifact URL. If omitted, prints help.
Options
Option
Short
Description
Default
--dir
-d
Installation directory for downloaded binaries. Can be an absolute path or a name (stored under ~/.ei/).
~/.ei
--install-only
Only install the binary, do not add it to PATH.
false
--name
Filter artifacts by name. Supports comma-separated values for multiple filters.
--alias
Rename the installed binary to the given alias.
--target
Target platform (e.g., x86_64-unknown-linux-gnu). Auto-detected if not specified.
auto-detect
--retry
Number of retry attempts for failed downloads.
3
--proxy
GitHub proxy to use (github, gh-proxy, ghproxy, jsdelivr, etc.).
github
--timeout
Network request timeout in seconds.
600
--strip [BOOL]
Strip debug symbols from executable. Can be used as a flag (--strip) or with a value (--strip true).
false
--upx [BOOL]
Compress executable with UPX. Can be used as a flag (--upx) or with a value (--upx true).
Easy Install supports automatic binary optimization for single-executable installations:
# Strip debug symbols to reduce binary size
ei https://github.com/boa-dev/boa --strip
# Compress binary with UPX for maximum size reduction
ei https://github.com/boa-dev/boa --upx
# Combine both for optimal results (strip runs first, then UPX)
ei https://github.com/boa-dev/boa --strip --upx
# 27M boa-x86_64-pc-windows-msvc.exe -> 7.1M C:/Users/Admin/.ei/boa.exe
Requirements:
--strip: Requires the strip command to be available in PATH
--upx: Requires the upx command to be available in PATH
Notes:
Optimization only works when installing a single executable file
If the required tool is not found, a warning is displayed but installation continues
Works cross-platform: you can use these flags on any OS, and they'll be silently skipped if tools aren't available
UPX uses --best --lzma flags for maximum compression
Custom Installation Directory
# Install to a specific absolute path
ei ./dist-manifest/mpv-easy.json -d c:/mpv-easy
# Install to a named directory under ~/.ei/
ei ./dist-manifest/mpv-easy.json -d custom-name
Upgrade
Upgrade ei itself to the latest version with a single command:
ei upgrade
This will download the latest release from the official repository and replace the current binary in-place.
Configuration Management
Easy Install supports persistent configuration through the config subcommand. Configuration is stored in ei_config.json in the same directory as the ei executable.
# View all configuration
ei config
# View specific configuration
ei config proxy
ei config dir
ei config target
ei config timeout
ei config retry
ei config strip
ei config upx
# Set configuration values
ei config proxy gh-proxy
ei config dir /custom/install/path
ei config target x86_64-pc-windows-msvc
ei config timeout 300
ei config retry 5
ei config strip true
ei config upx true
# Configuration priority (highest to lowest):
# 1. Command-line arguments (--proxy, --dir, --target, --timeout, --retry, --strip, --upx)
# 2. Configuration file (ei_config.json)
# 3. Default values
timeout - Network request timeout in seconds (default: 600)
retry - Number of retry attempts for failed downloads (default: 3)
strip - Strip debug symbols from executables (default: false)
upx - Compress executables with UPX (default: false)
Quiet Mode
Suppress all output messages during installation:
# Install silently (no output)
ei https://github.com/ahaoboy/mujs-build --quiet
# Short form
ei https://github.com/ahaoboy/mujs-build -q
# Useful for scripts and automation
ei yt-dlp/yt-dlp -q && echo "Installation complete"
Shell Completions
Generate shell completion scripts for your preferred shell:
# Generate completions for bash
ei completions bash > ~/.local/share/bash-completion/completions/ei
# Generate completions for zsh
ei completions zsh > ~/.zfunc/_ei
# Generate completions for fish
ei completions fish > ~/.config/fish/completions/ei.fish
# Generate completions for PowerShell
ei completions powershell > $PROFILE/../Completions/ei.ps1
# Generate completions for elvish
ei completions elvish > ~/.config/elvish/completions/ei.elv
Supported Shells:
bash
zsh
fish
powershell
elvish
After generating the completion script, restart your shell or source the completion file to enable tab completion for ei commands.
Configuration File Location:
The ei_config.json file is created in the same directory as the ei executable
Only created when you use ei config commands
If the file exists but is corrupted, it will be automatically reset to defaults
Manifest-Based Installation
# Install from a remote manifest
ei "https://github.com/ahaoboy/mujs-build/releases/download/v0.0.4/dist-manifest.json"
ei "https://github.com/easy-install/easy-install/releases/latest/download/ffmpeg.json"
# Install from a local manifest file
ei "./dist-manifest/screentogif.json"
Use Cases
Replacing cargo-binstall
Easy Install can be used as a drop-in replacement for cargo-binstall with more flexibility:
# Instead of: cargo binstall cargo-binstall
# Use:
ei cargo-bins/cargo-binstall -d ~/.cargo/bin
# This installs cargo-binstall to your Cargo bin directory
# Works with any GitHub release, not just Rust projects
Distribution Manifest
For complex packages containing multiple files, you can create a dist-manifest.json file to define the structure and assets. This follows the cargo-dist-schema format.