feat: support cargo-binstall for prebuilt CLI tools (#2659)

Map the existing release ZIP names and binary paths through package metadata, including ARM hard-float, RISC-V, Windows ARM64, and FreeBSD naming exceptions. Document repository-based installation and Windows sidecar requirements.

Fixes #365
This commit is contained in:
fanyang authored and GitHub committed 2026-10-10 10:17:08 +08:00
1 parent db289e87bb
commit bd06395573
3 files changed
+52

No files matched your search

+7
View File
@@ -69,6 +69,13 @@ Install via cargo (Latest development version):
cargo install --git https://github.com/EasyTier/EasyTier.git easytier
```
Install prebuilt CLI tools with [cargo-binstall](https://github.com/cargo-bins/cargo-binstall) (specify an existing release version):
```bash
cargo binstall --git https://github.com/EasyTier/EasyTier.git --version 2.6.4 easytier
```
This installs `easytier-core` and `easytier-cli` using the repository's metadata, independently of crates.io publication. On Windows, also copy the DLL and driver files from the matching release ZIP beside the installed binaries; binstall only installs executables.
[Install pre-built binary](https://github.com/EasyTier/EasyTier/releases) (Recommended, All platforms supported)
For a smaller executable, try [easytier-mini](https://github.com/EasyTier/easytier-mini), which supports basic TCP/UDP networking. See its documentation for supported features and usage.
+7
View File
@@ -69,6 +69,13 @@ irm "https://github.com/EasyTier/EasyTier/blob/main/script/install.ps1?raw=true"
cargo install --git https://github.com/EasyTier/EasyTier.git easytier
```
通过 [cargo-binstall](https://github.com/cargo-bins/cargo-binstall) 安装预编译命令行工具(请指定已有 release 的版本):
```bash
cargo binstall --git https://github.com/EasyTier/EasyTier.git --version 2.6.4 easytier
```
此方式使用仓库中的 metadata 安装 `easytier-core` 和 `easytier-cli`,不依赖 crates.io 发布。在 Windows 上,还需将对应 release ZIP 中的 DLL 和驱动文件复制到安装后的程序旁;binstall 只安装可执行文件。
[下载预编译文件](https://github.com/EasyTier/EasyTier/releases)(推荐,支持所有平台)
需要更小的可执行文件,可使用 [easytier-mini](https://github.com/EasyTier/easytier-mini):支持基础 TCP/UDP 组网,功能范围与使用方式见其文档。
+38
View File
@@ -451,6 +451,44 @@ hotpath-alloc = ["hotpath"]
# For Network Extension on macOS
macos-ne = []
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-{ os-name }-{ target-arch }-v{ version }.zip"
bin-dir = "{ name }-{ os-name }-{ target-arch }/{ bin }{ binary-ext }"
pkg-fmt = "zip"
# Release names distinguish hard-float ARM builds from their soft-float peers.
[package.metadata.binstall.overrides.arm-unknown-linux-musleabihf]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armhf-v{ version }.zip"
bin-dir = "{ name }-linux-armhf/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.arm-unknown-linux-gnueabihf]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armhf-v{ version }.zip"
bin-dir = "{ name }-linux-armhf/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.armv7-unknown-linux-musleabihf]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armv7hf-v{ version }.zip"
bin-dir = "{ name }-linux-armv7hf/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.armv7-unknown-linux-gnueabihf]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-armv7hf-v{ version }.zip"
bin-dir = "{ name }-linux-armv7hf/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.riscv64gc-unknown-linux-musl]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-riscv64-v{ version }.zip"
bin-dir = "{ name }-linux-riscv64/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.riscv64gc-unknown-linux-gnu]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-linux-riscv64-v{ version }.zip"
bin-dir = "{ name }-linux-riscv64/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.aarch64-pc-windows-msvc]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-windows-arm64-v{ version }.zip"
bin-dir = "{ name }-windows-arm64/{ bin }{ binary-ext }"
[package.metadata.binstall.overrides.x86_64-unknown-freebsd]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-freebsd-13.2-x86_64-v{ version }.zip"
bin-dir = "{ name }-freebsd-13.2-x86_64/{ bin }{ binary-ext }"
[package.metadata.cargo-machete]
ignored = [
# Used by build/main.rs, including the Windows-only thunk setup.