Repository navigation
Releases: nczxe/SMTCPlayer
Releases · nczxe/SMTCPlayer
Release list
V1.2.0
[1.2.0] - 2026-09-27
构建号:20260927012330A
新增功能
插件系统隔离
- 独立插件系统程序集
SMTCPlayer.PluginSystem:将插件宿主(发现/加载/启停/安装/卸载/任务轮询)从SMTCPlayer.Core整体迁出,仅依赖SMTCPlayer.PluginApi与SMTCPlayer.Logging,以PluginManager单一 facade 对外暴露全部能力 - 程序集级隔离:插件专属
PluginLoadContext禁止解析SMTCPlayer.Core/SMTCPlayer.PluginSystem/SMTCPlayer.WinUI/SMTCPlayer.Wpf,引用宿主程序集的插件加载失败并给出明确错误;SMTCPlayer.PluginApi保持单一程序集身份(契约零修改,现有插件无感) - 卸载生命周期管理:每插件独立取消令牌 → 在途事件/任务等待(≤3 秒)→
OnUnloadingAsync(≤3 秒)→ 释放全部强引用 → ALC 卸载与 GC 回收验证 - 插件广播池
PluginBroadcastPool:独立的有界队列(容量 256,DropOldest)+ 单读者顺序分发,插件与外部订阅者(LAN 服务)统一经池收发;采用序号缺口法精确统计丢弃量并周期性 Warn 汇总,单订阅者异常被隔离
插件安装与管理
- zip 插件包安装
PluginInstaller:解压暂存 → 校验清单/兼容性/Id 合法性 → 原子落位 → 自动加载;同 Id 升级先备份旧版本(保留最近 1 份),新版本激活失败自动回滚旧版本并恢复运行,杜绝"新旧均不可用"的静默状态 - 卸载:先移入回收站再删除(失败可恢复),可选连带清理插件数据与启用记录;内置插件仅可禁用、不支持卸载
- 独立插件管理窗口
PluginManagerWindow(WinUI):插件卡片列表(名称/版本/作者/描述/状态/加载错误)、启停开关、安装/卸载、重新扫描、打开插件目录与数据目录;设置面板移除内嵌插件列表,仅保留"插件管理"入口
局域网与外部协议
- 局域网实时通信服务(LAN 协议):C# 侧 TCP + 逐行 NDJSON 自有协议,默认端口 9000;PIN 经后端校验,支持
play/pause/toggle/next/previous/mute/volume/seek指令与get_status;状态变化实时推送给已鉴权连接;含 ping/pong 心跳与空闲超时回收- 资源限制:单条消息 64KB 上限、并发连接 16 上限、单连接鉴权尝试 5 次上限
smtcplayer://URI 协议:在 HKCU 注册(无需管理员,幂等自修复、设置页可开关);应用已运行时经单实例转发执行并置前窗口,未运行时拉起应用并在后端就绪后按序执行- 待执行队列:上限 16 条(满时丢最旧并记 Warn)、单条 60 秒超时作废
日志系统(重构)
- 独立日志程序集
SMTCPlayer.Logging:异步缓冲写入(有界队列 4096 + 专用后台写线程批量落盘),调用方不阻塞;退出限时 Flush(2 秒),拥塞丢弃计数周期上报 - 分类日志:按来源分类(Core/WinUI/Wpf/PluginSystem/LanProtocol/Plugin:<id> 等),保留
SMTC_LOG_LEVEL环境变量与调试模式开关 - 日志查看器
LogViewerWindow(WinUI):基于环形缓冲(最近 2000 条)实时滚动、可暂停/继续,支持级别/分类过滤、关键字搜索、自动滚动与导出视图
更新检查与更新日志
- 启动更新检查公告:应用启动后后台检查更新(每 24 小时节流并去重),发现新版本时提示用户并展示本次更新的要点——要点读取自网站静态资源
update.json的releaseNotes(与CHANGELOG.md同源生成);仅提示、不自动下载,检查失败静默处理不打扰 - 设置面板「查看更新日志」:一键查看当前最新版本的版本号、发布日期与更新要点,并可跳转网页查看完整更新日志
改进优化
- 插件日志隔离:每个插件独立
logs\plugins\<id>.log(全量级别、单文件 1MB 分卷);主日志仅镜像插件的 Warn/Error,便于独立排查 - 日志体积控制:主日志按日
smtc-YYYYMMDD.log+ 单文件 2MB 分卷,保留 7 天;50MB 总量上限覆盖整个logs\目录(含所有分卷与plugins\子目录),超限从最旧文件删除 - 日志噪声抑制:同(分类, 级别, 消息)10 秒窗口重复合并计数(
... (重复 N 次));Debug 级按分类限流(默认 120 行/分钟,超限丢弃并汇总 Warn);热路径刷屏日志降级(如封面更新 Info→Debug) - 日志目录迁移至
%LocalAppData%\SMTCPlayer\logs(安装版可写、更新不丢失);保留Logger静态门面按调用方程序集自动归类,现有调用点零改动,WPF 调试窗口仍可用 - Core 瘦身:
Core/Plugins/目录整体移除;依赖方向收敛为WinUI/Wpf → Core → PluginSystem → PluginApi,Logging为最底层共享件
问题修复
- 修复插件升级/卸载后旧文件仍被内存映射,导致备份目录单次删除失败、备份持续累积的问题(改为带重试的弹性删除)
- 修复 WinUI 版托盘右键菜单跟随应用窗口位置显示、窗口最小化时无法正确弹出的问题(改用
ContextMenuMode.PopupMenu+ContextFlyout,由系统在鼠标光标处弹出原生菜单,与窗口位置和状态解耦) - 修复 WinUI 版托盘右键「设置」被误绑定为弹出修改 PIN 对话框的问题(改为还原主窗口并打开设置面板,与标题栏设置按钮行为一致)
- 修复主窗口退出后子窗口(插件管理、日志查看器)未随之关闭、进程驻留不退出的问题(统一退出清理流程:停止轮询/局域网服务/插件与后端服务、关闭全部子窗口并释放托盘图标,收尾阶段显式结束进程,全程带超时兜底不阻塞)
文档更新
PLUGIN-DEVELOPMENT.md同步:新增隔离边界说明,补充 zip 安装/升级回滚/维护目录,更新日志输出格式与保护策略(仅改相关小节)
V1.1.1
V1.1.0
V1.0.1
如果不信任的话项目内提供了 build.bat 文件,你可以自行进行项目的编译(需要Python环境)。构建文件将会自动输出到dist文件夹下
云沙箱检测结果
- https://s.threatbook.com/report/file/3383b33192a44d564cb119e93976b72ea11c929a06a3743f2a91a4018cbabe7a
- https://ata.360.net/report/845085731974144
- https://sandbox.ti.qianxin.com/sandbox/page/detail?type=file&id=afd95238970e687519fb233f4c71eed696029328
提示:
- HEUR/QVM.Gen.203为360误报
- 只支持Windows10及以上系统
- 执行 Windows 管理规范 (WMI) 查询操作/加载与 WMI COM API 相关的动态库-这是石山代码的遗留,原计划是通过COM接口进行关闭浏览器弹窗,但是没实现,于是废弃,但未移除
- 搜索特定的邮件客户端文件-我也不知道它为什么会扫描,等一段时间我查一下代码看看
- 在用户目录下创建可执行文件-AppData不就是塞数据的吗?既然报了风险我后面换个位置
- 样本使用了PyInstaller打包器-这也报可疑行为?
- 为了用户安全所设计的cookie加密保护可能会被报勒索软件,不信任的话可以喂给AI问问详细代码
文件哈希值
- 文件名称:/SMTCPlayer_V1.0.1.exe
- MD5:ea7dda87e75bfe6d5593d4a0acf60aff
- 文件名称:/SMTCPlayer_V1.0.1.exe
- SHA256:3383b33192a44d564cb119e93976b72ea11c929a06a3743f2a91a4018cbabe7a
- 文件名称:/SMTCPlayer_V1.0.1.exe
- SHA512:00b6024ecf42369763526fab2a49faf200eedca5a6a1c40c3620a8093a351f84de4900e8fe8d2cf5ada74a994a1f07c0b1cac25e69007fdf60a7827d178c3e83
- 文件名称:/SMTCPlayer_V1.0.1.exe
- SHA1:49d93f39e4a77495a19c01c8fb3903207304fd55
Beta-v1.0.0
这是基于Python的原生Python应用程序,内部服务核心为Beta核心。