Skip to content

Latest commit

 

History

History
112 lines (81 loc) · 5.06 KB

File metadata and controls

112 lines (81 loc) · 5.06 KB

Simprint Browser Packager

将 Simprint 浏览器构建产物打包为可分发的 ZIP 压缩包。

Python 3.11+ Archive ZIP Tool uv

English | 简体中文


Introduction

Simprint Browser Packager 是一个小型打包工具,用于从 Chromium 风格的构建目录中收集 Simprint 浏览器构建产物,并将它们整理为可分发的 ZIP 压缩包。

它主要面向本地发版准备、浏览器运行时分发以及内部构建校验等场景,适合那些希望保留 Chromium 版本目录约定、而不是再套一层自定义安装器格式的发布流程。

Why Simprint Browser Packager?

浏览器构建输出通常并不适合直接分发。发布目录中往往包含版本目录、运行时 DLL、语言资源以及 Chromium 约定的一些目录结构要求,这些内容如果手工整理,既容易漏文件,也很难保证结构长期一致。

Simprint Browser Packager 的作用,就是把这件事变成可重复执行的流程。它不会依赖人工维护一份独立的拷贝清单,而是直接读取 chrome.release,按指定段落解析需要打包的文件,保留预期目录结构,并生成一个可校验、可稳定解压的 ZIP 产物。

Features

  • 基于 chrome.release 打包:直接复用 Chromium 风格的发布文件清单,而不是维护额外的人工复制列表。
  • 带版本号的输出文件名:从 chrome/VERSION 读取版本,并生成如 simprint-browser-146.0.7660.0.zip 的产物名。
  • 可控制的 ZIP 目录结构:可保留顶层目录,也可按部署需要将压缩包根目录扁平化。
  • 补齐运行时必要文件:在打包过程中纳入关键运行时 DLL、语言资源和版本清单,减少解压后无法启动的问题。
  • 自动生成版本 manifest:当构建产物中缺少 <version>.manifest 时,自动生成最小可用 manifest。
  • 输出产物校验信息:打包结束后打印压缩包大小和 SHA-256,便于记录和接入发布流程。

Quick Start

Prerequisites

  • Python 3.11+
  • uv
  • 一份 Simprint / Chromium 源码目录,且其中包含:
    • chrome/VERSION
    • out/Release 这样的构建输出目录
    • chrome/installer/mini_installer/chrome.release 这样的发布文件清单

Run

可在仓库根目录执行,也可在任何你希望输出 ZIP 产物的工作目录中执行:

uv tool run --from git+https://github.com/Simprint/simprint-browser-packager.git \
  simprint-browser-pack

示例:

uv tool run --from git+https://github.com/Simprint/simprint-browser-packager.git \
  simprint-browser-pack \
  --chromium-root <browser-source-root> \
  --build-dir out/Release \
  --release-file chrome/installer/mini_installer/chrome.release \
  --executable-name simprint \
  --output-prefix dist/simprint-browser

常用参数:

  • --chromium-root PATH:Chromium 或 Simprint 源码根目录。
  • --build-dir PATH:覆盖 BUILD_DIR
  • --release-file PATH:覆盖 release 文件路径。
  • -o, --output PATH:显式指定 ZIP 输出路径,此时不再自动追加版本后缀。
  • --executable-name NAME:覆盖可执行文件名。
  • --package-dir NAME:覆盖 ZIP 顶层目录名。
  • --output-prefix PREFIX:覆盖默认输出文件名前缀。
  • --flatten-zip / --no-flatten-zip:控制是否扁平化 ZIP 根目录。
  • --sections GENERAL,HIDPI,FFMPEG:覆盖 release 段落。
  • -v, --verbose:打印所有写入 ZIP 的文件路径。

Output

  • 默认输出文件名格式为 {OUTPUT_PREFIX}-{version}.zip
  • FLATTEN_ZIP=false 时,ZIP 会保留 PACKAGE_DIR/ 顶层目录。
  • FLATTEN_ZIP=true 时,ZIP 根目录直接包含可执行文件和版本目录。
  • 打包完成后,CLI 会额外输出:
    • archive file_size
    • archive sha256

为了保证解压后可以正常启动,可执行文件与版本目录必须保持同级;版本目录中也必须保留所需 manifest、DLL 和语言资源文件。

Status

Simprint Browser Packager 目前正在跟随 Simprint 整体开源重构工作逐步整理。

当前仓库已经可以用于内部打包和发版准备,但围绕文档、发布约定以及跨仓库集成的部分内容,仍在持续清理和补齐。

Contributing

欢迎提交 Issue 和 Pull Request。

当前更有价值的贡献方向包括:

  • 适配不同 Chromium 构建目录布局下的打包正确性
  • 缺失运行时文件或 release 段落时的诊断信息改进
  • 围绕 ZIP 产物与校验信息的发布自动化
  • 浏览器构建、打包与分发流程相关文档完善

License

本项目采用 GNU Affero General Public License v3.0 (AGPLv3) 进行许可。