Files
CydandClaude Fable 5 91640dcbf2 XP11: whole suite on net40 — Console + vPOD run on XP SP3 through Win11
The Launcher's XP11 port (8730b9b) now extends to everything: one net40
flavor across Console, vPOD, Contract, and SecureConfig (Newtonsoft.Json
everywhere; the net48/System.Text.Json legs and their #if splits are gone
since nothing consumed them).

Console (net40, single TFM like the Launcher):
- The ~31 BinaryFormatter bitmap blobs in the .resx files became raw
  embedded files under assets/icons/ (extracted byte-faithfully via a
  serialization surrogate — the animated square_throbber.gif survives),
  loaded by Properties.Resources.EmbeddedBitmap/EmbeddedIcon. Reason:
  System.Resources.Extensions' DeserializingResourceReader is net461+
  and cannot load on net40. Strings stay in the .resx.
- IReadOnlyList -> IList in AppRegistry (net45+ interface).

vPOD (net40, single TFM):
- Zip extraction now shares the Launcher's MiniZip.cs (linked source), so
  the diff-test install round-trip exercises it against ZipArchive zips.
- RPC args as JTokens; LaunchApps.json persistence via Newtonsoft;
  Thread.VolatileRead instead of Volatile.Read.

Contract/SecureConfig: net40-only; Client/** (PodManagerConnection) now
ships in the one build. The Launcher package gains
TeslaSecureConfiguration.dll as a dependency of the client half.

Tests: the net48 xunit host loads the net40 assemblies (both CLR4), so
the suite exercises exactly what ships — 106/106 green. Also verified
live: net40 console provisioned, managed, and ran a full RP mission
against net40 vPOD (beacon/passphrase/RSA, 53290 RPC, egg load,
Run/Stop Mission).

Version: 4.11.4.3 across Launcher, Console, and vPOD (vPOD joins the
suite version line; was 1.0.0). Ship the dotNetFx40 redistributable in
Launcher/assets for XP-era pods.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:01:34 -05:00

68 lines
2.3 KiB
Batchfile

@echo off
:: =============================================================================
:: TeslaConsole - Build ^& Package
:: =============================================================================
:: Publishes the console (net40, framework-dependent - XP11: runs on XP SP3
:: through Windows 11) into TeslaConsole\App and assembles the installable
:: package (App\ + install.bat) next to it. The 4.x runtime is in-box on
:: Windows 10/11; an XP-era control PC needs dotNetFx40_Full_x86_x64.exe once.
::
:: Requirements: .NET SDK (6.0+) to drive the build; internet for first restore.
::
:: Output:
:: TeslaConsole\
:: install.bat
:: App\ (TeslaConsole.exe + dependencies + RedPlanet\ content)
:: =============================================================================
setlocal
set ROOT=%~dp0
:: Package under dist\ so it never collides with the TeslaConsole\ SOURCE folder.
set BUILD_DIR=%ROOT%dist\TeslaConsole
set APP_OUT=%BUILD_DIR%\App
set ZIP=%ROOT%dist\TeslaConsole-pkg.zip
echo.
echo ============================================================
echo TeslaConsole - Build ^& Package (net40, framework-dependent)
echo Output : %BUILD_DIR%
echo ============================================================
echo.
where dotnet >nul 2>&1
if errorlevel 1 (
echo ERROR: dotnet not found. Install the .NET SDK from https://dotnet.microsoft.com/download
pause & exit /b 1
)
:: Don't publish over a running instance.
taskkill /F /IM TeslaConsole.exe >nul 2>&1
echo Publishing TeslaConsole...
if exist "%APP_OUT%" rmdir /s /q "%APP_OUT%"
dotnet publish "%ROOT%TeslaConsole.csproj" -c Release -o "%APP_OUT%"
if errorlevel 1 (
echo.
echo ERROR: Build failed.
pause & exit /b 1
)
if exist "%ROOT%install.bat" copy /y "%ROOT%install.bat" "%BUILD_DIR%\" >nul
echo Zipping package...
if exist "%ZIP%" del /q "%ZIP%"
powershell -NoProfile -Command "Compress-Archive -Path '%BUILD_DIR%' -DestinationPath '%ZIP%' -Force"
echo.
echo ============================================================
echo Package built: %BUILD_DIR%
echo Zip : %ZIP%
echo ============================================================
echo.
echo Next steps:
echo 1. Copy TeslaConsole-pkg.zip to the control PC and extract it
echo 2. Run TeslaConsole\install.bat as Administrator
echo.
pause