Commit Graph
7 Commits
Author SHA1 Message Date
feifei.xu 0efaf2946b fix: 修复插件卸载后重启失败问题,增加安装进度日志 2026-07-21 16:26:08 +08:00
feifei.xu ca6c538060 feat(plugin): 实现插件更新功能
- PluginRegistry 新增 _update_requested 信号与 do_update slot
- 待处理清单扩展支持 tool_name|remote_path 更新行格式
- 启动时 _process_pending_uninstalls 删旧 .pyd 后从服务器复制新文件
- PluginsCard 新增 parse_version 版本比较与 on_update_event
- 更新链路复用卸载的自重启机制,一次重启完成更新
2026-07-20 14:25:18 +08:00
feifei.xu 51e30d41c6 feat(plugin): 实现插件卸载功能与自重启机制
目的:补齐 Event.Uninstall 空实现,打通卸载全链路。

背景:原 plugin_registry.py 的 Uninstall 分支为空 pass;运行时直接
os.remove 删 .pyd 触发 WinError 5(Windows 文件锁,.pyd 已被 import)。

方案:
- 卸载流程分层清理:Worker 写待删清单 → Registry 清字典/obj →
  main 清 toolBar/stackedWidget → plugins_card 刷新为未安装
- .pyd 文件删除延迟到下次启动 _process_pending_uninstalls,
  在 worker 线程启动前、import 之前执行,避开文件锁
- 卸载后自动重启:QProcess.startDetached + QApplication.quit,
  兼容开发模式(python.exe)与打包模式(main.exe)
- _remove_with_retry 应对自重启时原进程句柄未释放的暂态竞争
- _on_local_discovered 加异常隔离,单插件失败不拖垮初始化
- QThread 生命周期管理:aboutToQuit → shutdown(quit+wait),
  finished → worker.deleteLater,消除 Destroyed 警告
- plugins_card 抽 refresh() 方法,统一卡片状态刷新

影响:卸载功能可用;自重启在命令行/打包模式正常,调试器环境
可能因子进程管理闪退(不影响交付)。
2026-07-20 13:15:16 +08:00
feifei.xu aaad6b8aa6 基础功能完成 2026-07-20 10:31:10 +08:00
feifei.xu 207cbde4bc 优化 2026-07-17 15:27:33 +08:00
feifei.xu 6bb68eb6b7 更新 2026-07-14 14:24:54 +08:00
feifei.xu d17a54eb73 更新版本 2026-06-12 16:01:53 +08:00