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]`). and starts the launcher RPC. The pod row goes healthy (`Idle [<n> ms]`).
The key persists in `%LocalAppData%\vPOD\TeslaKeyStore.key` (launcher format), The key persists in `%LocalAppData%\vPOD\TeslaKeyStore.key` (launcher format),
so provisioning is one-time. **Reprovision** drops the key and returns to so provisioning is one-time. **Reprovision** resets to a fresh pod — drops the
beacon mode — pair it with deleting the pod in Manage Site (the console's key, clears the installed-apps store (`LaunchApps.json`) and returns to beacon
**Reconfigure…** does both ends automatically: its `ClearStore` makes vPOD mode — pair it with deleting the pod in Manage Site (the console's
drop the key and beacon again). **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 ### Product deployments
+5 -2
View File
@@ -632,10 +632,13 @@ internal sealed class VPodForm : Form
mRpcStatusLabel.ForeColor = Color.Gray; mRpcStatusLabel.ForeColor = Color.Gray;
} }
/// <summary>Drops the session key and re-enters provisioning — from the UI /// <summary>Drops the session key, clears the installed-apps store and
/// button, or when the console's Reconfigure clears our store.</summary> /// 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() private void DropKeyAndReprovision()
{ {
mLauncher.WipeApps();
mLauncher.DeleteKey(); mLauncher.DeleteKey();
mRpcServer.Stop(); mRpcServer.Stop();
mProvisioning.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 /// so re-entering provisioning (beacon mode) is what makes Reconfigure completable
/// without the real pod's reboot-with-DHCP step.</summary> /// without the real pod's reboot-with-DHCP step.</summary>
public void ClearStore() 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) lock (mLock)
{ {
@@ -307,9 +316,7 @@ internal sealed class VirtualLauncher
mLaunchedApps.Clear(); mLaunchedApps.Clear();
SaveApps(); SaveApps();
} }
Log?.Invoke("ClearStore: installed apps wiped; dropping session key to re-enter provisioning.");
AppsChanged?.Invoke(); AppsChanged?.Invoke();
ReprovisionRequested?.Invoke();
} }
// ---- install progress (InitiateInstallProduct / GetOutOfBandProgress) ---- // ---- install progress (InitiateInstallProduct / GetOutOfBandProgress) ----