diff --git a/Console/vPOD/README.md b/Console/vPOD/README.md index 0fb409e..90fd0eb 100644 --- a/Console/vPOD/README.md +++ b/Console/vPOD/README.md @@ -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 [ 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 diff --git a/Console/vPOD/VPodForm.cs b/Console/vPOD/VPodForm.cs index 3485589..14e3fe7 100644 --- a/Console/vPOD/VPodForm.cs +++ b/Console/vPOD/VPodForm.cs @@ -632,10 +632,13 @@ internal sealed class VPodForm : Form mRpcStatusLabel.ForeColor = Color.Gray; } - /// Drops the session key and re-enters provisioning — from the UI - /// button, or when the console's Reconfigure clears our store. + /// 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.) private void DropKeyAndReprovision() { + mLauncher.WipeApps(); mLauncher.DeleteKey(); mRpcServer.Stop(); mProvisioning.Stop(); diff --git a/Console/vPOD/VirtualLauncher.cs b/Console/vPOD/VirtualLauncher.cs index 7df9171..9a5992e 100644 --- a/Console/vPOD/VirtualLauncher.cs +++ b/Console/vPOD/VirtualLauncher.cs @@ -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. public void ClearStore() + { + WipeApps(); + Log?.Invoke("ClearStore: installed apps wiped; dropping session key to re-enter provisioning."); + ReprovisionRequested?.Invoke(); + } + + /// Clears the installed/launched app registries (LaunchApps.json) — + /// the store-wipe half of ClearStore, also used by the UI's Reprovision. + 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) ----