pod: self-contained bundles - drivers install via the game postinstall
Per Cyd: no operator ever installs anything on a pod by hand. build-pod.ps1 now mirrors the universal inner layout (app/app-xp, vendor, install-core.bat + install-rio.ps1 reused verbatim) and bundles the flavor prerequisites (ViGEmBus / XP .NET+KB+RioGamepadXP). New install-riojoy.bat entry point is called from the game postinstall.bat: self-elevating, idempotent, add-only. Deliberately no uninstall step - other podized games may share the drivers, so they are abandoned in place. Also: deploy scripts must stay pure ASCII (PS5.1 reads BOM-less UTF-8 as ANSI; an em dash decodes to a smart quote that terminates strings). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -203,13 +203,22 @@ podized game's install carries its own copy, built by:
|
||||
deploy\build-pod.ps1 -ProfileJson <your-game-profile.json>
|
||||
```
|
||||
|
||||
That emits a ~5 MB drop-in — `riojoy\` (app + a **portable** `config.json`
|
||||
holding just this game's profile; a config beside the exe wins over the
|
||||
per-user `%APPDATA%` store) plus `start-riojoy.bat` — which the game's
|
||||
launch script calls before starting the game:
|
||||
That emits a **self-contained** drop-in (~8 MB on net48): `riojoy\` — the app,
|
||||
a **portable** `config.json` beside the exe holding just this game's profile
|
||||
(it wins over the per-user `%APPDATA%` store), and all RIOJoy prerequisites
|
||||
(ViGEmBus; on the XP flavor .NET 4.0 + the RioGamepadXP driver) — plus two
|
||||
entry points the game's package wires up:
|
||||
|
||||
- **`install-riojoy.bat`** — call from the game's `postinstall.bat`.
|
||||
Self-elevating and **idempotent**: safe on every install, reinstall, and
|
||||
update; it installs only what's absent and never removes anything. Put
|
||||
**nothing** in the game's pre-uninstall — drivers stay in place by design,
|
||||
since another podized game may share them and idle drivers are harmless.
|
||||
- **`start-riojoy.bat`** — call from the game's launch script before the
|
||||
game:
|
||||
|
||||
```
|
||||
start "" "...\riojoy\RioJoy.Tray.exe" --exit-with <game exe>
|
||||
start "" "...\riojoy\app\RioJoy.Tray.exe" --exit-with <game exe>
|
||||
```
|
||||
|
||||
`--exit-with` makes RIOJoy self-managing: it activates when the game's window
|
||||
@@ -223,10 +232,10 @@ release the single-instance lock.
|
||||
Properties that matter on a cabinet: each game pins the RIOJoy build it was
|
||||
verified with (updating RIOJoy for a new game can't regress an old one);
|
||||
native games simply don't bundle RIOJoy, so the COM ports are free for them
|
||||
by construction; and drivers stay a one-time pod provisioning step (the
|
||||
universal package's `install-rio.ps1`) — pod bundles deliberately carry none.
|
||||
The bundled exe is still the full tray app: run it with no arguments on the
|
||||
pod and you have the profile editor.
|
||||
by construction; and every bundle is fully self-sufficient — drivers install
|
||||
through the game's own postinstall, so a fresh pod needs no separate RIOJoy
|
||||
provisioning pass. The bundled exe is still the full tray app: run it with no
|
||||
arguments on the pod and you have the profile editor.
|
||||
|
||||
## Testing without hardware or game
|
||||
|
||||
|
||||
Reference in New Issue
Block a user