vPOD: Reprovision also wipes the installed-apps store

The UI's Reprovision button only dropped the session key; the console-driven
ClearStore was the only path that cleared LaunchApps.json. Both now share
VirtualLauncher.WipeApps, so Reprovision = fresh pod (key + app registry
gone, beacon mode; extracted Games\ files stay, as on a real pod).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-10 09:47:48 -05:00
co-authored by Claude Fable 5
parent e87a8a22f1
commit 60893172c3
3 changed files with 20 additions and 8 deletions
+6 -4
View File
@@ -87,10 +87,12 @@ assigned network config is shown in the window but never applied):
and starts the launcher RPC. The pod row goes healthy (`Idle [<n> ms]`).
The key persists in `%LocalAppData%\vPOD\TeslaKeyStore.key` (launcher format),
so provisioning is one-time. **Reprovision** drops the key and returns to
beacon mode — pair it with deleting the pod in Manage Site (the console's
**Reconfigure…** does both ends automatically: its `ClearStore` makes vPOD
drop the key and beacon again).
so provisioning is one-time. **Reprovision** resets to a fresh pod — drops the
key, clears the installed-apps store (`LaunchApps.json`) and returns to beacon
mode — pair it with deleting the pod in Manage Site (the console's
**Reconfigure…** does both ends automatically: its `ClearStore` makes vPOD do
the same wipe and beacon again). Extracted packages under `Games\` are left on
disk either way.
### Product deployments
+5 -2
View File
@@ -632,10 +632,13 @@ internal sealed class VPodForm : Form
mRpcStatusLabel.ForeColor = Color.Gray;
}
/// <summary>Drops the session key and re-enters provisioning — from the UI
/// button, or when the console's Reconfigure clears our store.</summary>
/// <summary>Drops the session key, clears the installed-apps store and
/// re-enters provisioning — from the UI button, or when the console's
/// Reconfigure clears our store. (Fresh-pod state; extracted Games\ files
/// are left on disk.)</summary>
private void DropKeyAndReprovision()
{
mLauncher.WipeApps();
mLauncher.DeleteKey();
mRpcServer.Stop();
mProvisioning.Stop();
+9 -2
View File
@@ -300,6 +300,15 @@ internal sealed class VirtualLauncher
/// so re-entering provisioning (beacon mode) is what makes Reconfigure completable
/// without the real pod's reboot-with-DHCP step.</summary>
public void ClearStore()
{
WipeApps();
Log?.Invoke("ClearStore: installed apps wiped; dropping session key to re-enter provisioning.");
ReprovisionRequested?.Invoke();
}
/// <summary>Clears the installed/launched app registries (LaunchApps.json) —
/// the store-wipe half of ClearStore, also used by the UI's Reprovision.</summary>
public void WipeApps()
{
lock (mLock)
{
@@ -307,9 +316,7 @@ internal sealed class VirtualLauncher
mLaunchedApps.Clear();
SaveApps();
}
Log?.Invoke("ClearStore: installed apps wiped; dropping session key to re-enter provisioning.");
AppsChanged?.Invoke();
ReprovisionRequested?.Invoke();
}
// ---- install progress (InitiateInstallProduct / GetOutOfBandProgress) ----