Skip to content

旋武发行版

旋武发行版项目,支撑旋武发行版的集成发布,并实现发行版一站式安装管理工具。安装管理工具支持图形化用户接口 (GUI) 以及命令行接口 (CLI)。

安装及使用请见旋武官网发行版下载页面

工作原理

基本原理

本程序读取一个名为 toolset-manifest 的配置文件,从中加载工具列表,然后借助 rustup 安装 Rust 工具链,并通过多种方法安装不同的工具(*支持 vscodeMSVC buildtoolsMinGW 等,存在相应的条件与限制,详情请参见支持范围部分)。

安装完成后,用户将获得一个 toolkit(工具包),它是 Rust 工具链与(可能包含的)用户选择安装的其他工具集合的组合。toolkit 同样支持升级/降级操作。这需要另一个名为 distribution-manifest 的配置文件,该文件通常存储在服务器上,用于告知程序当前有哪些可用的 toolkit 版本可供安装。

安装器与管理器

本程序的功能分为两个部分:installer(安装器)和 manager(管理器),类似于 rustuprustup-initrustup

  • installer负责初始设置工作,对本地环境进行初始化,包括:
    • 创建安装根目录
    • 自动设置 CARGO_HOMERUSTUP_HOMERUSTUP_DIST_SERVERRUSTUP_UPDATE_ROOT 等环境变量。(注意:如果您已手动配置过这些变量,它们可能会被覆盖)。 环境变量设置完成后,程序将引导您完成 Rust toolkit 的安装。

rustup 不同,本程序除了管理 Rust 工具链外,还可用于管理其他附加工具集。 此外,本程序默认会安装 rustup,因此您可以继续正常使用 rustup

构建

前提条件

  1. 安装 Rust

    若仅需 CLI 二进制文件,除 Rust 外无需其他依赖,可直接跳至下一步。 若需 GUI 二进制文件,则需额外安装 NodeJS 等软件包。

  2. 安装 NodeJs

  3. 安装 pnpm,安装 NodeJS 后,可使用 npm 通过以下命令安装:

    bash
    npm install -g pnpm@latest
  4. (仅 Linux)使用以下命令安装额外的开发软件包:

    bash
    bash ./ci/scripts/install-tauri-deps.sh

调试

  • 调试 installer 模式:

    • 命令行界面
    bash
    cargo dev run --cli --installer
    • 图形界面
    bash
    pnpm dev run --installer
  • 调试 manager 模式:

    运行 manager 不像运行 Installer 模式那样简单。 因为 manager 二进制文件需要与一些配置文件等一同存放,否则会发生 panic。幸运的是,有一个辅助命令可以帮助您创建模拟环境,以便更轻松地测试 manager 的功能。

    bash
    cargo dev run --manager

发布

  1. 创建发布版本前,您需要了解要构建哪个版本。发布版本可在 toolkit 配置文件 中找到,默认版本为 Basic(用于测试)。如需发布其他版本(如 community),可通过 EDITION 环境变量指定,例如:

    bash
    export EDITION='community'
  2. 若需离线包发布,还需将用于离线安装的软件包进行本地化,可通过以下命令完成:

    bash
    cargo dev vendor --download-only
  3. 最后,您可以使用下表中的特定命令创建发布包,结果将存储在 dist/ 目录下。

    Net InstallerNet Installer & Offline Package
    CLIcargo dev dist -b --clicargo dev dist --cli
    GUIcargo dev dist -b --guicargo dev dist --gui
    Bothcargo dev dist -bcargo dev dist

使用方法

此处仅列出 CLI 模式,有关 GUI 的使用方法,请查看此页面了解详情。

目前,GUI 模式仅支持中文,英文支持及其使用文档即将上线。

安装程序模式(CLI)

console
Usage: rim-cli [OPTIONS]

Options:
  -l, --lang <LANG>             Specify another language to display [possible values: cn, en]
      --prefix <PATH>           Set another path to install Rust
      --manifest <PATH or URL>  Specify a path or url of manifest file that contains package source and various configurations
  -h, --help                    Print help
  -V, --version                 Print version

示例

  1. 设置默认安装目录:

    bash
    ./rim-cli --prefix path/to/dir
  2. 通过加载自定义清单进行安装(模板:toolset_manifest.toml):

    bash
    ./rim-cli --manifest path/to/your/toolset-manifest.toml

管理模式(CLI)

检测到安装记录后,管理模式将运行。此外,也可在运行程序前将 MODE 环境变量设置为 manager 来强制启用管理模式,例如在 Unix 系统中运行 export MODE='manager'

console
Usage: MODE='manager' rim-cli.exe [OPTIONS] [COMMAND]

Commands:
  update     Update toolkit and/or this installation manager
  uninstall  Uninstall individual components or everything
  try-it     A subcommand to create a new Rust project template and let you start coding with it
  help       Print this message or the help of the given subcommand(s)

Options:
  -l, --lang <LANG>  Specify another language to display [possible values: cn, en]
  -h, --help         Print help
  -V, --version      Print version

示例

  1. 卸载全部:
bash
./manager uninstall
  1. 更新自身及工具包:
bash
./manager update
  1. 仅更新工具包:
bash
./manager update --toolkit-only
  1. 导出预配置的示例项目:
bash
./manager try-it -p /path/to/create/project

支持

本程序支持安装多种格式的软件包,您可以将这些软件包信息写入toolset-manifest,并在执行 CLI 应用时通过 --manifest path/to/your/ 参数指定该文件,即可选择安装这些软件包。

目前支持以下软件包格式:

  1. 二进制文件 - (Windows 系统扩展名为 .exe,Linux 系统无扩展名)
  2. VS Code 插件 - (.vsix 文件)
  3. *压缩文件 - (扩展名为 .gz.xz.7z.zip

对于压缩文件,程序会先尝试将其解压到临时路径,然后识别其中的结构,主要有以下两种类型:

  1. 包含 bin/ 文件夹的目录
  2. 普通目录

这两种类型的目录都会被放置在 <InstallationRoot>/tools 文件夹下,但如果目录中包含 bin/ 文件夹,其路径会额外添加到用户的 PATH 环境变量中。

已知问题

  1. 在部分 Linux 发行版上存在与 WebKitGTK 相关的 bug,导致 GUI 程序启动后显示空白。 可通过将环境变量 WEBKIT_DISABLE_COMPOSITING_MODE 设置为 1 来绕过此问题:

    bash
    export WEBKIT_DISABLE_COMPOSITING_MODE=1