Add RIOJoy to the product catalog

RIOJoy (the cockpit RIO → virtual-gamepad feeder; separate net48 repo) is now an
installable/launchable product in Console/RedPlanet/Apps.xml. Its dist zip is
already TeslaConsole-shaped (postinstall.bat + RIOJoy\ → extracts to C:\Games, the
launcher runs postinstall.bat as SYSTEM to install ViGEmBus + register auto-start),
so this is the only change needed on the TeslaSuite side.

- Launch entry exe C:\Games\RIOJoy\app\RioJoy.Tray.exe, autoRestart=false (the
  postinstall HKLM Run entry owns startup; the catalog entry is for registration +
  manual restart from the console).
- CatalogTests: bumped the count guard to 4 products / 6 entries and added a
  byte-exact LaunchData check for the RIOJoy entry. 74 tests green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-06-30 14:13:36 -05:00
co-authored by Claude Opus 4.8
parent d5c4be26ce
commit ce094535fa
2 changed files with 27 additions and 2 deletions
+19
View File
@@ -76,4 +76,23 @@
autoRestart="true"
hostType="None" />
</Product>
<!-- RIOJoy — virtual-gamepad feeder for the cockpit RIO board (separate repo,
net48 framework-dependent). Its dist\RIOJoy-<ver>.zip is purpose-built for
Install Product: extracts to C:\Games (giving postinstall.bat + RIOJoy\),
and the launcher runs postinstall.bat as SYSTEM — it installs ViGEmBus and
registers RIOJoy to auto-start at logon (HKLM ...\Run). The launch entry
below registers it in the pod app list and lets the operator (re)start it on
demand; autoRestart is false because the auto-start Run entry owns startup. -->
<Product id="87FBC2E6-6359-4EF4-96A5-DF157823CFF6"
name="RIOJoy"
menuText="RIOJoy..."
hostTypeDialog="false">
<Launch key="FE83E212-45DF-48F9-848E-0B3CEE0692A3"
displayName="RIOJoy"
exe="C:\Games\RIOJoy\app\RioJoy.Tray.exe"
args=""
autoRestart="false"
hostType="None" />
</Product>
</AppCatalog>
@@ -25,10 +25,16 @@ namespace TeslaConsole.DiffTests
=> _fx.Recovered.Run("CatalogEntry", new[] { _catalog, launchKey, w, h });
[Fact]
public void Catalog_Has_Three_Products_And_Five_Entries()
=> Assert.Equal("products=3;entries=5",
public void Catalog_Has_Four_Products_And_Six_Entries()
=> Assert.Equal("products=4;entries=6",
_fx.Recovered.Run("CatalogSummary", new[] { _catalog }));
[Fact]
public void RioJoy_Matches_Expected()
=> Assert.Equal(
@"RIOJoy|fe83e212-45df-48f9-848e-0b3cee0692a3|C:\Games\RIOJoy\app\RioJoy.Tray.exe||C:\Games\RIOJoy\app|False",
Entry("FE83E212-45DF-48F9-848E-0B3CEE0692A3"));
// Each expected string is "DisplayName|LaunchKey|Exe|Args|WorkingDirectory|AutoRestart"
// and matches exactly what the old hardcoded PodInfo_InstallProductCompleted emitted.