跳转到内容
你正在查看尚未发布的 main 分支的文档,其中可能包含尚未进入任何发布版本的变更。

Niobium

Niobium 根据一份经过签名的发布描述来安装、更新、修复和卸载桌面软件。你把一次发布描述为数据,Niobium 将它打包并签名,再由一个小巧的原生 setup 可执行文件以事务方式应用:无论在任何时刻崩溃,机器上要么是旧版本,要么是新版本,绝不会是两者的混合。

Niobium 目前为 0.1 版本,尚未做出任何兼容性承诺。哪些内容已经验证、哪些尚未验证,统一列在一个页面上:状态与平台。

  1. 清单是数据,绝不是代码。 没有安装脚本、shell 命令或 exec 字段。
  2. 期望状态,而非执行步骤。 你声明应该安装什么,由 Niobium 规划步骤。
  3. 安装程序负责部署,应用负责迁移。 数据库升级等业务逻辑通过 App Bootstrap 在你的应用中运行。
  4. 权限是封闭的能力集合。 提权助手只接受一组固定的、带类型的文件与系统集成操作。
  5. 安装是事务化的。 崩溃后的恢复只会到达旧版本或新版本。
  6. 没有运行时扩展。 安装程序不加载插件、钩子或自定义库。
  1. 描述。 在你自己的构建产物旁边,编写一个 product.json 清单,并为每个组件编写一个 component.json。
  2. 打包并签名。 nbpack 把每个组件变成不可变的 tar.zst 制品,组合出发布清单,并将其签名写入一个 TUF 仓库。你的 build.zig 通过 Niobium 构建 API 驱动这一过程。
  3. 发布并安装。 通过 HTTP 提供仓库,或者以离线包的形式分发。用户运行 setup,它会验证签名,并以事务方式应用这次发布。

教程:第一次发布 用示例产品完整走一遍这三个步骤。

以下情况 Niobium 可能适合:

  • 你为 macOS、Windows 或 Linux 发布原生桌面软件,并希望在这些平台上使用同一种安装模型;
  • 你希望安装和更新不会停留在只应用了一半的状态;
  • 你希望发布授权(谁可以发布什么、回滚保护)与应用版本相互独立;
  • 你能用 Zig 0.17 从源码构建:Niobium 不提供预构建的二进制文件。

以下情况 Niobium 不适合:

  • 你需要安装时脚本或自定义动作:框架在设计上就拒绝它们;
  • 你需要其封闭集合之外的能力(快捷方式、文件关联、服务、应用注册、受管文件);
  • 你现在就需要可用于生产环境的安装程序:Windows 和 Linux 上的真实系统验证、整机范围安装以及操作系统代码签名都尚未完成(状态与平台);
  • 你需要的平台不在简短的支持列表中,或者需要支持承诺:Niobium 是一个尽力维护的个人业余项目(关于本项目)。
部分 用途
教程 完整地构建、签名、安装、更新并卸载一次示例产品
概念 理解模型:清单、制品、事务、权限、信任、通道
指南 完成单项任务:打包、签名、发布、实现 App Bootstrap、嵌入、静默安装
安全 了解 Niobium 防御什么、不防御什么,以及如何报告问题
状态与平台 查看哪些内容已经验证、在哪个平台上、结果如何
平台支持 查看目标平台、各自的支持层级以及后续计划
路线图 查看哪些功能已经提供、哪些正在开发、哪些不在计划内
故障排查 将退出码或故障对应到原因,并找到日志
关于本项目 了解 Niobium 为何存在、由谁维护、可以期待怎样的支持
参考 查阅字段、命令、退出码、事件和 C ABI

源码、规范和问题跟踪都在 GitHub 上。英文版是原文;如果中文译文与英文版不一致,以英文版为准。