Two additions to the virtual launcher's real-process mode:
- Auto-restart watchdog. Replaces the poll-on-query PruneExitedProcesses
with a per-process watcher thread (StartWatcher): when a real-launched
app exits on its own -- not via a Kill*/Uninstall, which untrack it
first -- it is dropped from the running list and, if its LaunchData has
AutoRestart and the "Auto-restart after the app exits (watchdog)"
toggle is on, relaunched after the Agent's 2 s delay. A watchdog
generation counter cancels pending restarts when the pod goes dark
(power off / reboot / reprovision / WipeApps); the console's KillAllApps
leaves them pending, matching the real Agent's race.
- postinstall.bat toggle. A "Run postinstall.bat after install" checkbox
(above "Actually launch apps", off by default) makes an install execute
a packaged postinstall.bat via cmd /c (waited up to 5 min) before
deleting it, like the real service. Off, it is logged and removed unrun
as before -- it runs package script code on the host.
Both are opt-in from the vPOD window. Verified against the real
LauncherRpcServer over a loopback socket: the watchdog test relaunches an
exited ping.exe with a new PID and stops once toggled off; a crafted
package's postinstall.bat runs (and is removed) only when enabled. Full
differential suite 103/103.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>