Repository navigation
v0.2.7 —— 修掉自更新时弹出的 invalid originating onefile parent process
v0.2.7 —— 修掉自更新时弹出的「invalid originating onefile parent process」
v0.2.6 的自更新本身是成功的,但过程中会弹一个错:
Security validation failure: invalid originating onefile parent process
(PID not found)!
根因:PyInstaller 6.x 的 onefile 会校验启动子进程的父进程
(issue #9513 /
PR #9520:在两者之间插入另一个程序就会失败)。
我们的链条是「旧 exe → VBS(wscript.exe) → 新 exe」,而更新脚本启动新 exe 后只等 3 秒
就删掉自己并退出 —— 而 29 MB 的 onefile 解包需要更久;等新实例的 bootloader 回头校验
父进程时,wscript.exe 的 PID 已经不在了。
修法:启动新 exe 后轮询等它真的出现(复用模板里已有的 WMI Win32_Process 查询),
再额外多留 15 秒才删除脚本自身并退出,确保父进程在解包期间全程存活
(正常更新与回滚分支都改了)。
顺带:把更新脚本模板里的中文注释改成英文 —— WSH 按 ANSI 读 .vbs,非 ASCII 会直接导致
800A0408 无效字符。模板现在实测 0 个非 ASCII 字符、无 BOM。
附件
EndfieldModController-0.2.7.exeassets-bundle.zip(与 v0.2.6 相同,未改动)