← All tools
Desktop Toolv0.5.0 — Active Development

Rubra Packager

A Windows release workstation for validating trusted static web games and packaging them for Windows and Android.

Release packagingWindows EXEAndroid APK / AABPreflight validation
Rubra Packager Projects screen showing the project registry, release profiles and build controls.

Release packaging as a repeatable workflow

Rubra Packager is a Windows desktop workstation for the less glamorous part of shipping a web game: taking a trusted static project, checking that the package is coherent and producing a target build without repeating the same manual release steps every time.

The project lives in the Rubra-Composer repository. The current site baseline is v0.5.0 — Active Development.

What v0.5.0 covers

Register projects once

The Projects shelf stores a source folder together with its packaging profile and release metadata. Profiles such as Arena Rubra, Generic Web Game and Generic HTML App define required paths, target defaults and FULL/LITE exclusion rules.

That keeps packaging policy out of the game source itself and makes repeated builds easier to reproduce.

Preflight before packaging

A build should fail early for the right reason.

Preflight scans the selected variant, reports included and excluded files, estimates package size and separates blocking errors from warnings. Static HTML/CSS references, local JavaScript module imports and static new URL(..., import.meta.url) assets can be checked directly; dynamic runtime-generated paths are not guessed.

Windows executable output

The Windows workspace prepares a one-file desktop executable using the project’s Windows packaging stack. Application name, profile, variant and custom icon stay visible before the build starts.

The source repository documents the Windows path as a PyInstaller + PyWebView package rather than a generic Python-to-EXE converter.

Android APK and AAB output

Android packaging adds a separate toolchain: Java, Android SDK, Node.js/npm and the Gradle/Capacitor build path.

The v0.5.0 interface exposes debug/release-oriented Android output, APK/AAB selection, launcher icon configuration and release-signing fields. Those controls are deliberately kept separate from the Windows path so platform requirements are visible.

Supported static source layouts

Rubra Packager recognizes a root index.html or common static output folders including:

  • dist/
  • build/
  • out/
  • .output/public/
  • Gatsby public/ when Gatsby is detected
  • Angular-style dist/<project>/browser/

The boundary is intentional: a framework project must produce a real static index.html. Server-side rendering, backend APIs and dynamic routes are outside the current packaging scope.

Trust is part of the product design

Sometimes the requested source is not already built. Rubra Packager can then invoke npm install and npm run build, but package scripts are executable code.

The UI therefore requires an explicit trust choice before source execution. That warning is not decorative; it is part of the release model.

Why build this instead of another one-off script?

Arena Rubra and the smaller GVibeDev web experiments repeatedly needed the same operations: locate a static output, validate required assets, package the correct variant, configure icons, build for a target and verify the resulting artifact.

Rubra Packager turns that repeated release work into a visible, inspectable workflow:

Register → Preflight → Fix → Build → Verify

The goal is not to hide packaging behind one magic button. It is to make the steps repeatable enough that a build can be understood when something goes wrong.

Setup / dependencies

Know the release target before you press Build.

Windows packaging can work from an already-static project, while Android output adds a Java, Android SDK and Node toolchain. Rubra Packager keeps those dependencies visible before the build instead of discovering them halfway through Gradle.

CategoryWeb game release packaging
Platform / outputWindows desktop · Windows EXE · Android APK / AAB
Public packageRepository available · Release package pending
Core workflow

Windows release workstation

Windows desktop hostRequired

The current public workflow is a Windows desktop application launched through the repository's Windows scripts.

Static web application outputRequired

The source project must expose a real index.html at the root or in a recognized static output folder such as dist, build, out or .output/public.

Trusted project sourceRequired

If Rubra Packager needs to run npm install or npm run build, the source can execute package scripts. Source execution must be enabled explicitly only for projects you trust.

Android build

Android toolchain

JDK 17 or newerRequired for Android

Required for Android packaging. The v0.5.0 development capture shows the Java toolchain detected before an Android build.

Android SDKRequired for Android

Required for Android packaging and normally installed through Android Studio. Rubra Packager checks the configured SDK before build.

Node.js and npmRequired for Android

Required by the Android packaging workflow and by source projects that need an npm build step before packaging.

Windows installation

Install and start Rubra Packager

The public launcher is designed to create or repair a per-user runtime instead of relying on an editable contributor environment.

  1. Extract the complete project archive

    Put the complete Rubra Packager source/archive in a normal user-writable folder. Do not launch it from inside a compressed archive.

  2. Run the normal Windows launcher

    Start run_windows.cmd normally, not as Administrator. The launcher creates or repairs the per-user runtime under %LOCALAPPDATA%\RubraPackager\runtime and does not treat a half-created environment as a valid installation.

    run_windows.cmd
  3. Register a trusted project folder

    Add the source folder once, choose the appropriate profile and select the FULL or LITE packaging variant.

  4. Run preflight before building

    Fix blocking errors first and review warnings. Preflight checks required paths and only resolves static references with high confidence instead of guessing dynamic runtime filenames.

  5. Build the target package

    Use the Windows workspace for a desktop executable or the Android workspace for APK/AAB output. Android builds require the additional Java, SDK and Node toolchain shown above.

  6. Verify the artifact

    Check the generated SHA-256 and test the result on the target Windows or Android device before treating the package as releasable.

The project repository is public, but no GitHub Release is linked yet. The site therefore exposes the repository action and deliberately omits a Download release button until a real release package is published.