Phase 8: final decisions — editor everywhere, universal archive, dual installers

- Mapping editor ships in all instances, XP included (wallpaper maker
  stays modern-only with SkiaSharp).
- One dist zip deploys on both XP and Win10/11: app (net48 x64) +
  app-xp (net40 x86) + vendor prereqs incl. offline .NET 4.0/KB2468871
  redistributables and RioGamepadXP.sys.
- Two entry points: postinstall.bat (TeslaConsole/launcher, unattended)
  and install.bat (freestanding, adds shortcuts). OS-detected via ver;
  pure cmd on the XP path.

All Phase 8 open decisions are now resolved; ready to implement 8A.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-11 20:22:20 -05:00
co-authored by Claude Fable 5
parent 6ad1abc919
commit a9de26eff6
+35 -16
View File
@@ -296,17 +296,17 @@ Replaces the legacy Google-Sheet → `.data` → GIMP → Script-Fu pipeline
### Phase 8 — Windows XP compatibility (dual-target) — planned
Bring RIOJoy back to the original XP-era cabinets (x86, XP SP3) **without
regressing Windows 10/11**. Strategy: one codebase, two flavors — modern
machines stay the *authoring* platform (editor + wallpaper maker + packaging);
XP gets the full *runtime* (serial, mapping, vJoy joystick, keyboard/mouse,
lamps, plasma, wallpaper apply).
regressing Windows 10/11**. Strategy: one codebase, two flavors, **one
universal deployment archive**. The mapping editor ships everywhere
(decided); only wallpaper *generation* (SkiaSharp) stays modern-only —
XP consumes pre-rendered wallpapers.
| | Windows 10/11 (unchanged) | Windows XP SP3 |
|---|---|---|
| TFM / arch | net48, x64 | **net40, x86** (.NET 4.0 is XP's ceiling; 4.5+ needs Vista) |
| Virtual joystick | ViGEm → RioGamepad → none (unchanged) | **RioGamepadXP.sys** — our own thin WDM HID minidriver (same feeder contract) — full 6-axis/96-button fidelity |
| Overlay render | SkiaSharp (generate + apply) | consume pre-rendered wallpaper only (**PNG→BMP** — XP's `SystemParametersInfo` takes BMP only) |
| Editor | full (incl. wallpaper maker) | mapping editor only (pure WinForms/GDI+); wallpaper maker gated (Skia) |
| Editor | full (incl. wallpaper maker) | **mapping editor included** (decided; pure WinForms/GDI+); wallpaper maker gated (Skia) |
| JSON | System.Text.Json → **Newtonsoft 13** | Newtonsoft 13 (STJ needs net461+; one serializer for both flavors) |
| Install scripts | PowerShell | **.bat only** (XP has no in-box PowerShell) |
@@ -348,10 +348,26 @@ lamps, plasma, wallpaper apply).
stays (Segoe UI falls back to Tahoma). XP cabinets consume wallpapers
pre-rendered on a modern machine (`RioProfile.WallpaperPath` travels with
the config).
- **8D — Packaging:** `build-package.ps1 -Flavor XP`
`RIOJoy-XP-<ver>.zip` (net40/x86 publish, RioGamepadXP.sys + INF,
`.bat` install/uninstall, README-DEPLOY-XP: prereqs XP SP3 + .NET 4.0 Full
+ KB2468871). Modern zip unchanged; release both to Gitea.
- **8D — Packaging (decided: one universal archive, two install entry
points).** `build-package.ps1` produces a single `RIOJoy-<ver>.zip` that
deploys on **both** XP and 10/11:
- Layout: `RIOJoy\app\` (net48 x64) + `RIOJoy\app-xp\` (net40 x86) +
`RIOJoy\vendor\` (ViGEmBus installer for 10/11; RioGamepadXP.sys + INF
for XP; **.NET 4.0 Full + KB2468871 redistributables** so an offline XP
cabinet needs nothing else — adds ~70 MB, XP can't download anymore) +
`VERSION.txt` + README-DEPLOY.
- **`postinstall.bat`** (zip root, unattended): the TeslaConsole/launcher
entry point, as today — detects the OS (`ver` → 5.1 = XP, 10.x = modern),
installs the matching prereqs (ViGEmBus silently via the existing
PowerShell on 10/11; .NET 4.0 + KB2468871 + driver INF on XP), and wires
the matching app flavor. No prompts, idempotent.
- **`install.bat`** (zip root, freestanding computers): same OS detection
and prereq install, plus what a machine without the launcher needs —
Start Menu/desktop shortcut to the right flavor's exe (still no logon
auto-start; starting RIOJoy stays deliberate). Pure cmd.exe on the XP
path; may call PowerShell only on the 10/11 path.
- `pre-uninstall.bat` / uninstall mirror both scenarios. Release the one
zip to Gitea per the established process.
- **8E — Verification:** full suite stays net48-hosted (xUnit needs
net452+; shared sources are what's tested) + a tiny net40 console
self-test for the shims, run on XP. Ladder: net40/x86 binary boots on
@@ -359,13 +375,16 @@ lamps, plasma, wallpaper apply).
driver needs real/virtualized XP too — vhidmini-class drivers run fine
in a VM) → real cabinet (joy.cpl shows 6 axes + 96 buttons, SendInput
into a game, lamps, plasma, auto-switch yield, BMP wallpaper).
- **To confirm before starting:** (1) keep the mapping editor on XP or ship
runtime-only? (2) which XP cabinets / how do files get onto them (drives
the .bat installer shape)?
*Decided:* the Xbox 360 pad (ViGEm) remains the preferred controller on
Windows 10/11 whenever ViGEmBus is present. **No third-party virtual
joystick drivers** (vJoy/PPJoy are unmaintained) — XP gets our own
RioGamepadXP.sys instead.
- **All open decisions resolved:**
1. The Xbox 360 pad (ViGEm) remains the preferred controller on
Windows 10/11 whenever ViGEmBus is present.
2. **No third-party virtual joystick drivers** (vJoy/PPJoy are
unmaintained) — XP gets our own RioGamepadXP.sys.
3. The **mapping editor ships in all instances**, XP included.
4. **Both install scenarios** in one archive: `postinstall.bat`
(TeslaConsole/launcher, unattended) and `install.bat` (freestanding
computers, adds shortcuts); the single dist zip carries everything
needed for both XP and 10/11, including offline redistributables.
---