为Rust开发的CLI小游戏工具制作安装程序并发布至GitHub
发布Rust CLI工具至GitHub并实现一键安装指南
一、预发布:编译多平台二进制文件
要让用户无需安装Cargo就能运行,你需要提前为各主流系统编译好静态二进制文件:
- MacOS:
- 编译ARM64(M系列芯片):
cargo build --release --target aarch64-apple-darwin - 编译x86_64(Intel芯片):
cargo build --release --target x86_64-apple-darwin - 编译产物在
target/[目标架构]/release/目录下,将二进制文件重命名为mints-macos-arm64、mints-macos-x86_64
- 编译ARM64(M系列芯片):
- Linux:
- 先安装交叉编译目标:
rustup target add x86_64-unknown-linux-musl(musl编译出静态二进制,无需依赖系统库) - 编译x86_64:
cargo build --release --target x86_64-unknown-linux-musl - 同理添加ARM64目标并编译,重命名为
mints-linux-x86_64、mints-linux-arm64
- 先安装交叉编译目标:
- Windows:
- 安装Windows交叉编译目标:
rustup target add x86_64-pc-windows-gnu - 编译:
cargo build --release --target x86_64-pc-windows-gnu - 重命名产物为
mints-windows-x86_64.exe
- 安装Windows交叉编译目标:
二、制作一键安装脚本(实现直接调用mints)
核心是将二进制文件放到系统默认PATH目录中,让终端能全局识别mints命令:
MacOS/Linux 安装脚本(bash)
创建名为install.sh的文件,内容如下(替换占位符为你的Release下载地址):
#!/bin/bash # 检测系统架构 ARCH=$(uname -m) # 匹配对应二进制下载地址 case $ARCH in x86_64) BIN_URL="替换为你GitHub Release中Linux x86_64二进制的下载地址" ;; aarch64) BIN_URL="替换为你GitHub Release中Linux ARM64二进制的下载地址" ;; arm64) BIN_URL="替换为你GitHub Release中MacOS ARM64二进制的下载地址" ;; *) echo "不支持的架构类型" && exit 1 ;; esac # 下载并安装到全局PATH目录(/usr/local/bin默认在PATH中) sudo curl -L $BIN_URL -o /usr/local/bin/mints # 添加执行权限 sudo chmod +x /usr/local/bin/mints echo "安装完成!执行 'mints <game> <args>' 即可开始游戏。"
Windows 安装脚本(PowerShell)
创建名为install.ps1的文件,内容如下:
# 检测系统架构 $arch = if ([Environment]::Is64BitOperatingSystem) { "x86_64" } else { "x86" } # 替换为对应二进制下载地址 $binUrl = "替换为你GitHub Release中Windows x86_64二进制的下载地址" # 安装目录(可自定义,建议选已在PATH中的目录或添加到PATH) $installDir = "C:\Program Files\mints" New-Item -ItemType Directory -Force -Path $installDir Invoke-WebRequest -Uri $binUrl -OutFile "$installDir\mints.exe" # 将安装目录添加到系统PATH(需要管理员权限) [Environment]::SetEnvironmentVariable("PATH", "$env:PATH;$installDir", [EnvironmentVariableTarget]::Machine) Write-Host "安装完成!打开新终端执行 'mints <game> <args>' 即可开始游戏。"
卸载脚本
创建uninstall.sh(MacOS/Linux):
sudo rm /usr/local/bin/mints echo "已成功卸载mints"
三、GitHub发布流程
- 打版本Tag:在本地仓库执行
git tag v1.0.0(遵循语义化版本规则,比如v主版本.次版本.修订号),然后推送Tag到GitHub:git push origin v1.0.0 - 创建Release:进入你的GitHub仓库页面,找到右侧的Releases入口,点击
Draft a new release,选择刚才创建的Tag,填写版本说明(比如新增游戏、修复bug等) - 上传文件:将所有编译好的二进制文件、安装脚本、卸载脚本、SHA256校验文件(可选)上传到Release中
- 发布Release:确认信息无误后点击
Publish release
四、环境变量配置说明
- MacOS/Linux:
/usr/local/bin是默认全局PATH目录,普通用户通过sudo权限即可写入;如果用户没有sudo权限,可修改安装脚本将二进制放到~/.local/bin(需确保该目录在用户的PATH中,若没有可让用户在~/.bashrc或~/.zshrc中添加export PATH="$HOME/.local/bin:$PATH") - Windows:脚本中已自动将安装目录添加到系统PATH,需注意执行PowerShell脚本时需要管理员权限
五、发布注意事项
- 版本规范:严格遵循语义化版本(SemVer),便于用户识别更新类型
- 文件校验:为每个二进制文件生成SHA256校验和(比如
shasum -a 256 二进制文件名 > 文件名.sha256),上传到Release中,让用户可以验证文件完整性 - 测试验证:在不同系统上测试安装、运行、卸载流程,确保脚本正常工作
- README更新:在仓库README中添加清晰的安装说明、游戏列表、使用示例,比如告诉用户可通过curl执行你上传到Release的安装脚本(需sudo权限)一键安装
- MacOS签名:MacOS的Gatekeeper会阻止未签名的二进制运行,若有苹果开发者账号可给二进制签名,否则需告诉用户在系统设置-隐私与安全性中允许运行
- 静态编译:Linux编译时使用musl目标,生成静态二进制,避免用户因缺少系统库无法运行
- 后续维护:每次发布新版本时,更新Tag、Release内容、安装脚本中的下载地址
内容的提问来源于stack exchange,提问作者Universe31
相关产品推荐
相关产品推荐

