Repository navigation
v1.0.7
狐径 FoxPath v1.0.7 — 升级护栏:不会把旧版本当新版,升坏了会自动回滚
下载
| 文件 | 说明 |
|---|---|
FoxPath.exe |
主程序,绿色单文件,双击即用。版本号写在 exe 属性里(鼠标悬停 / 右键-属性-详细信息) |
version.json |
升级信息,已装用户点「检查更新」时读取。这个附件不能少,否则老版本拿不到升级提示 |
这一版修的两个升级问题(都是真机上抓到的)
① 不会再把「降级」当「升级」提示
现象:本地版本比线上新时(开发/预发布版本),面板仍然显示「发现新版本 vX」,
点「立即升级」会把本地版本换成更旧的线上版本。
这一版:升级前按版本号语义比较(1.0.10 > 1.0.9 这种也算得对),三种结论各说各的:
- 线上更高 → 「发现新版本 vX(当前 vY)」,可以升级;
- 一样 → 「已是最新版 vX」;
- 线上更低 → 「本地版本比线上新(线上尚未发布)」,「立即升级」按钮置灰。
服务端也加了硬闸门:任何升级入口在「远程 ≤ 本地」时直接拒绝并写日志
(拒绝降级:远程 x < 本地 y),连下载都不会发生 —— 只挡前端按钮是不够的。
② 升级之后新版起不来 —— 真因查清并修掉
现象:升级流程走完(下载、校验、覆盖都成功),但新版一次都没起来,
用户看到的是「升级之后程序没了」。
真因(对照实验钉死):升级小助手是从主程序里起的,会继承单文件 exe 的 _PYI_* 环境变量
(_PYI_PARENT_PROCESS_LEVEL / _PYI_APPLICATION_HOME_DIR / _PYI_ARCHIVE_FILE)。
新版本的引导程序一看到 _PYI_PARENT_PROCESS_LEVEL,就以为「我是子进程、已经解过包了」,
于是跳过解包、去找那个早已随旧实例退出被删掉的临时目录,直接失败
(Failed to load Python DLL)—— 应用连一行日志都没有。
修复:起新版本之前先把这些变量从环境里擦掉(主程序侧 + 小助手脚本各擦一次,双保险)。
更正一条旧结论:2026-10-08 那次同类故障当时记为「杀毒软件拦截」(实测过火绒),
真因就是上面这个,与杀毒软件无关。特此更正。
顺带补上的兜底
- 升级「成功」的判定改成按版本号确认(新版真的起来了才算成功),不再只是「文件覆盖完了」;
- 新版连续起不来时,小助手会把旧版本放回去并重新启动它
(日志里能看到三步:覆盖失败 / 回滚 / 旧版已起来); - 升级交接过程中的启动路径不再弹模态对话框(卡住等人点「确定」会让升级看起来像死机);
- 升级存档带上格式版本并向下兼容,新旧版本互相读对方的存档都不会报错。
本版还包含(开发中积累、随本版一起发)
- 默认自动升级:发现新版本后不再弹确认框,静默完成;只有失败才提示一次,可在设置里关掉。
- 升级结果气泡 + 面板回执:成功/失败都会在系统通知里弹一下;面板「版本与升级」那一栏常驻显示
「上次升级结果(成功/失败 + 时间 + 原因)」,重启后仍在。 - 接管
github.io/ GitHub Pages 相关域名:演示页、项目主页这类静态站点也能正常打开。 - 十余项边界与安全加固:接口同源校验、数据目录原子写、异常路径的还原与幂等、
/pac全 ASCII 等。
升级时请注意
- 从 v1.0.6 升到 v1.0.7 这一跳用的仍然是老版小助手(不重试、不回滚),所以仍可能失败一次;
失败了双击一下FoxPath.exe即可(升级本身是完成的)。 - 从 v1.0.7 往后,升级全程带护栏:失败会自动回滚并保留一个能用的版本。
- 程序退出前会还原系统代理,所以升级过程中不影响上网。
已知边界(照旧)
- 运营商如果按 SNI 掐断(TLS 握手里能看到域名),本地代理帮不上忙 —— 只能换网络或换方案。
- raw / 发布附件的专属池在部分线路上时通时不通,体检会如实反映,不会假装成功。
- 只代理 GitHub 相关域名;不改 hosts、不改系统 DNS,退出时还原系统设置。
- 控制面板只监听
127.0.0.1,接口已做 Host/Origin 同源校验(挡网页 CSRF 与 DNS rebinding)。
版本历史(近几版)
| 版本 | 日期 | 说明 |
|---|---|---|
| v1.0.7 | 2026-10-09 | 升级护栏:拒绝降级、升级失败自动回滚、修掉「升级后新版起不来」的真因(_PYI_* 继承,同时更正此前「杀毒软件拦截」的误判);默认自动升级 + 升级结果气泡与面板回执;接管 github.io(本次对外发布,Gitee 与 GitHub 同步) |
| v1.0.6 | 2026-10-08 | 联通/移动友好:候选池扩到官方全量、IP 表三源依次试、raw 文件与发布附件也能加速(回应 issue #1)、面板线路体检与手动指定 IP |
| v1.0.5 | 2026-09-22 | 网页版在线升级:检查更新 / 立即升级 / 进度条,下载校验 SHA256 后由独立小助手接管覆盖重启 |
| v1.0.1 | 2026-09-22 | 修「还原不了系统代理」一类缺陷;Fix-GitHub.ps1 补 UTF-8 BOM(此前无法运行) |
| v1.0.0 | 2026-09-19 | 首个版本:本地代理 + PAC、每 5 分钟 IP 体检、候选池自动刷新、全灭自愈、退出还原 |
反馈:GitHub Issues · Gitee Issues
维护约定(发版的人看):这份文件的首行版本号就是当前线上版本。发新版前把它整篇换成新版本的说明
(或改用 --notes <文件>);tools/publish.py 不带 --notes 时会读这份文件,并校验首行版本号与
要发的版本一致,不一致直接中止 —— 免得发行页挂着上一版的文案。