Skip to content

Simprint/simprint-browser-packager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simprint Browser Packager

Package Simprint browser build outputs into portable ZIP archives.

Python 3.11+ Archive ZIP Tool uv

English | 简体中文


Introduction

Simprint Browser Packager is a small packaging utility used to collect Simprint browser build outputs from a Chromium-style build tree and bundle them into a distributable ZIP archive.

It is designed for local release preparation, browser runtime delivery, and internal build verification scenarios where the final artifact needs to preserve Chromium version-directory conventions instead of being repacked through a custom installer format.

Why Simprint Browser Packager?

Browser build outputs are not convenient to distribute directly. The release tree usually contains versioned files, runtime DLLs, locale assets, and packaging expectations that need to stay aligned with Chromium conventions.

Simprint Browser Packager exists to make that process repeatable. Instead of manually copying files from out/Release, it reads chrome.release, resolves the required sections, preserves the expected directory layout, and emits a ZIP artifact that can be verified and unpacked consistently.

Features

  • chrome.release-driven packaging: Read Chromium-style release file lists instead of maintaining a separate manual copy list.
  • Version-aware output names: Resolve the browser version from chrome/VERSION and generate archives like simprint-browser-146.0.7660.0.zip.
  • Portable ZIP layout control: Keep a top-level package directory or flatten the archive root depending on deployment needs.
  • Runtime completeness checks: Include key runtime DLLs, locale assets, and the version manifest required for unpacked startup behavior.
  • Manifest fallback generation: Generate the minimal <version>.manifest automatically when the build output does not already provide one.
  • Artifact verification output: Print archive size and SHA-256 after packaging so the result can be recorded or reused in release workflows.

Quick Start

Prerequisites

  • Python 3.11+
  • uv
  • A Simprint / Chromium source tree containing:
    • chrome/VERSION
    • a build output directory such as out/Release
    • a release list file such as chrome/installer/mini_installer/chrome.release

Run

Run the packager from the repository root or any working directory where you want the ZIP artifact to be written:

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

Example:

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

Useful flags:

  • --chromium-root PATH: Chromium or Simprint source root.
  • --build-dir PATH: Override BUILD_DIR.
  • --release-file PATH: Override the release file path.
  • -o, --output PATH: Write to an explicit ZIP path without adding the automatic version suffix.
  • --executable-name NAME: Override the executable name.
  • --package-dir NAME: Override the ZIP top-level directory name.
  • --output-prefix PREFIX: Override the default archive name prefix.
  • --flatten-zip / --no-flatten-zip: Control whether the ZIP root is flattened.
  • --sections GENERAL,HIDPI,FFMPEG: Override release sections.
  • -v, --verbose: Print every archived file entry.

Output

  • By default, the generated file name is {OUTPUT_PREFIX}-{version}.zip.
  • When FLATTEN_ZIP=false, the ZIP keeps PACKAGE_DIR/ as the top-level folder.
  • When FLATTEN_ZIP=true, the ZIP root directly contains the executable and the version directory.
  • After packaging, the CLI prints:
    • archive file_size
    • archive sha256

For unpacked startup to work correctly, the executable and the version directory must remain siblings after extraction, and the version directory must contain the expected manifest, DLLs, and locale files.

Status

Simprint Browser Packager is being prepared as part of the broader Simprint open-source refactoring work.

The repository is already usable for internal packaging and release preparation, but the surrounding documentation, release conventions, and cross-project integration details are still being cleaned up.

Contributing

Issues and pull requests are welcome.

Current high-value contribution areas include:

  • Packaging correctness across different Chromium build layouts
  • Better diagnostics for missing runtime files and release sections
  • Release automation around generated ZIP artifacts and checksums
  • Documentation for browser build, packaging, and distribution workflows

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).

Releases

No releases published

Packages

 
 
 

Contributors

Languages