85c2976e22
Two halves close the 'legacy pythonw gateways survive updates forever' gap: 1. hermes update now regenerates the installed Scheduled Task / Startup launcher scripts (gateway.cmd + gateway.vbs) during the gateway resume phase. They are persistence artifacts written once at install time; updates never touched them, so pre-aa2ae36c3f installs kept launching the gateway through pythonw.exe forever — every descendant spawn flashed a conhost (#54220/#56747) and, since #70344, the console-less gateway died at startup with RuntimeError: sys.stderr is None (#71671). The task /TR points at a stable script path, so rewriting the files retargets it with no schtasks call and no UAC. No-op for modern installs; best-effort so a failed refresh never fails the update. 2. _resolve_detached_python() normalizes a legacy pythonw.exe interpreter to its sibling console python.exe when it exists, so the update pause/resume argv-replay path (and any other caller handed a legacy command line) respawns on the current design instead of faithfully resurrecting the old one. Keeps pythonw when no sibling exists — a failed respawn is worse than a console-less gateway.