Repository navigation
Releases: non266/local-player
Release list
1.8.0
1.8.0:字幕关了能再打开;画面右键里选字幕 / 音轨(全屏也能用)
修复
V/「字幕 → 关闭字幕」原来只会关、不会开:关上之后同一个入口再按一次什么都不做,
菜单第一项的文字也一直写着「关闭字幕」。现在它是一个开关:关着再按就回到刚才那条字幕轨,
文字在「关闭字幕 / 打开字幕」之间跟着变。- 全屏时没有任何入口:菜单栏会收起,而画面区域的鼠标消息被 libvlc 的子窗口吞掉了
(实测VideoView.MouseUp/DoubleClick一次都不触发——帮助里的"双击画面进全屏"从写下来
那天起就是死代码)。新增画面右键菜单,双击画面进 / 退全屏也真的能用了。 - 菜单里的
Disable假轨道(libvlc 清单里 id = -1 的那条)不再当成轨道列出来:
字幕那边它和「关闭字幕」重复(关着时两个都打勾),音轨那边点它是"全部静音"。 - 双击判定改看窗口命中:只判"光标在画面矩形里"的话,浮在画面上的桌面歌词 / 侧栏悬浮窗
被双击也会把播放器切进全屏;现在要WindowFromPoint顺着父窗口找到VideoView才算。
新增
- 画面右键菜单:字幕轨道 / 音轨 / 播放 / 暂停 / 停止 / 全屏。主菜单与右键菜单同一份填法,
勾选状态不会走偏。 - 音轨除了「视图 → 音轨」,全屏时也能直接换;字幕轨道同理。
验证
release-check全绿:Debug / Release / 冒烟三工程 0 警告 0 错误,全量 20/20。- 便携包解压后在自己的目录里跑全量 20/20(184 秒);原地升级后 646 个文件 / 245.0 MB,
与载荷逐文件 SHA256 644/644 一致、0 缺失 0 多余;安装目录里跑全量 20/20;
卸载后目录 / 开始菜单 / 卸载项都清掉,%AppData%\播放器15 个文件 0 变化。 - 新增断言(第 13 步)与 6 条变异,逐条形红原话见 CHANGELOG.md。
产物
local-player-1.8.0-setup.exe— 59.17 MB
SHA256AC0F0E6C88A0A5D4F334BCB4F4CB57FCA84213DF97FAC68B9CEFFE83A40B3588local-player-1.8.0-portable.zip— 95.17 MB
SHA2568460AD0F69C068DFBE3BA758A6D7DACB9D52DC299F17155BEF2141F7029EB105
安装到 %LocalAppData%\Programs\全能本地播放器(免 UAC);卸载不会动
%AppData%\播放器 里的设置 / 历史 / 歌单 / 设置方案 / 字体。
1.7.0
1.7.0
这是 1.6.2 之后第一个加东西的版本(次版本)。三条都在下面,另有 1.6.2 之后的一轮维护(R6~R9)。
新增:按文件记住音轨 / 字幕轨
- 选过哪条音轨、哪条字幕轨(含「关闭字幕」)就按文件记下来,同一个文件下次打开自动选回去,
关掉程序再来也算;网络串流不记。 - 「上次特意关掉字幕」与「从来没选过」是两件事——前者下次打开仍然是关的。
- 如果这个文件后来换过压制版本、记住的那条轨不在了,就保持默认,不会硬塞一条别的。
- 记在
history.json(只增两个可空字段;老文件照常读)。
新增:播放列表「找出重复项」
- 列表右键菜单 →「找出重复项」:按完整路径比对(大小写、相对 / 带
..的写法都认),
保留第一次出现的那一项,其余只选中、不自动删;状态栏说找到几项,要删按Delete。 - 没有再给"一键删除":选中之后你本来就能按 Delete,多一个会删东西的菜单项不如少一个。
修复:去隔行菜单里的「自动」是个空选项
- 上一版(1.6.2)的实测发现:
自动与关闭逐像素完全相同——libvlc 3 的播放器级接口
只接受具体滤镜名(blend / bob / linear / yadif / yadif2x / ivtc / phosphor),auto不在其中。 - 1.7.0 把它删掉(菜单 9 → 8 项);老设置 / 老设置方案 / 导入 json 里存的
auto读进来
归成"关闭"——它本来就没起作用,所以行为不变。 - 真正的"自动"(按片源自动判断)要内核级
--deinterlace=-1,会牵动换内核那套(M8),
记在docs/1.7.0计划.md的 F9,这一版不做。
维护轮 R6~R9(也在这一版里)
- R6:把 README / 介绍 / 维护手册 / 架构里"当前状态"的假话逐条校准(SDK、装机数字、SMTC、
adjust 滤镜复测结论……共十几处),并新增tools/docs-check.ps1接进release-check
——以后文档再漂,验收会直接红。 - R7:冒烟最后两个 >500 行的文件拆到 ≤500;剩下的 8 个 >500 的文件写明了"为什么不拆"。
- R8:去隔行实际效果实测(合成隔行素材):混合 / 线性 / Yadif / IVTC / 荧光把"梳状"压低约 78%。
- R9:漏洞扫描(无)、版本巡检(无更新)、文档终检。
验收(本机实测)
release-check全绿 146 秒:Debug / Release / 冒烟三工程 0 警告 0 错误 + 全量 20/20(含新检查)。- 便携载荷 644 个文件 / 240.3 MB:
7z t全绿,在它自己的目录里跑全量 20/20。 - 原地升级:装出 646 个文件 / 244.7 MB,与载荷逐文件 SHA256 644/644 一致;
安装目录跑全量 20/20;卸载后%AppData%\播放器15 个文件 0 变化。
升级提示
- 从 1.6.x 直接覆盖安装即可;离线安装包不需要先装 .NET(自包含)。
- 没有数字签名,第一次运行会弹 SmartScreen「未知发布者」——这是没买证书的必然结果。
- 已知边界:音轨 / 字幕轨记忆记的是 libvlc 的轨道 id,同一个文件稳定;换压制版本可能对不上
(那时保持默认)。合成素材上的去隔行结论不代表所有真实片源。
1.6.2
1.6.2 — 维护版(没有用户看得见的变化)
这一版只有测试、重构与文档:界面、功能、播放行为都没有改动。
这一版做了什么
- 测试:给两条偶发红的检查(进度条拖动)与「桌面歌词」耗时抖动装上探针——失败时会把引擎状态与事件写进日志,下次再红就能直接说清是"媒体被重载 / 内核被换 / 播完重来 / 真被 seek"。
- 重构:冒烟测试 7 个最大的源文件按职责拆成 23 个分部、产品侧 3 个独立类拆成 6 个文件(行为零变化,每处都做了读回自查与变异验证)。
- 例行:漏洞扫描(无)、依赖巡检(libvlc 3.0.24 / LibVLCSharp 3.10.2 / SDK 10.0.402 均为最新)、以及"画面调整"的复测结论。
验证
tools/release-check.ps1全绿:Debug / Release / 冒烟三工程 0 警告 0 错误 + 全量 20/20- 便携版载荷与安装目录各自跑了一遍全量 20 步冒烟,都是一次过关
- 在 1.6.1 上原地升级:安装目录 646 个文件(644 载荷 + 2 卸载器),与载荷 644/644 逐文件 SHA256 一致
- 卸载后
%AppData%\播放器逐字节没动
安装
- 安装程序:免 UAC,装到
%LocalAppData%\Programs\全能本地播放器,卸载不删你的设置 / 历史 / 歌单 / 字体 - 便携版:解压即用,不写注册表
- 两个产物都没有代码签名,SmartScreen 会提示"未知发布者"
校验
local-player-1.6.2-setup.exe— SHA256E335E2F98C57577C4FB94C87F1A848993D7E0FD0A3C2F762FCCDF3DB6390C35Alocal-player-1.6.2-portable.zip— SHA256CAB7C38BF3AC31CBD7F6FBF70F94CCC35F164575F4AE9D18C46B6BD501A6568B
如实说明:体积与 1.6.1 几乎完全相同(没有二进制层面的功能变化);这一版没有任何新能力,可以跳过不装。完整变更见 CHANGELOG。
1.6.1
1.6.1 — 构建基线换成 .NET 10(体积小了一大截)
功能与界面没有任何改动:这一版换的是运行时的底座——目标框架从 net8.0-windows10.0.19041.0 换成 net10.0-windows10.0.19041.0,播放内核仍是 libvlc 3.0.24。
下载体积
| 产物 | 1.6.1 | 1.6.0 |
|---|---|---|
| 安装程序 | 59.17 MB | 71.10 MB |
| 便携版 zip | 95.17 MB | 110.51 MB |
原因是 .NET 10 的 WinForms 自包含发布不再打包 WPF 那一套程序集(31 个),载荷从 276.0 MB 降到 240.3 MB;另外 libvlc 3.0.24 比 3.0.23 少 3 个插件。
验证
tools/release-check.ps1全绿:Debug / Release / 冒烟三工程 0 警告 0 错误 + 全量 20/20- 便携版载荷与安装目录各自跑了一遍全量 20 步冒烟,都是一次过关
- 在已有的 1.6.0 上原地升级验证:安装目录 646 个文件(644 载荷 + 2 卸载器),与载荷 644/644 逐文件 SHA256 一致
- 卸载后
%AppData%\播放器逐字节没动;依赖扫描没有易受攻击的包
安装
- 安装程序:免 UAC,装到
%LocalAppData%\Programs\全能本地播放器,卸载不删你的设置 / 历史 / 歌单 / 字体 - 便携版:解压即用,不写注册表
- 两个产物都没有代码签名,SmartScreen 会提示"未知发布者"
校验
local-player-1.6.1-setup.exe— SHA2561D831AD0070953AB81F97152BF145FA9D0368170CD38EF5C2F1C7E205DD73058local-player-1.6.1-portable.zip— SHA256A302A8BF0777279DB22739CB74049B0943BD2F950EB9C4257E8F99F238A2771C
如实说明:界面观感 / 字体 / DPI / 渲染没有人工验过,只有构建 + 20 步冒烟;换运行时后如果遇到渲染相关的怪问题,先怀疑这里。完整变更见 CHANGELOG。
1.6.0
1.6.0 — 升级播放内核
播放内核 libvlc 3.0.23 → 3.0.24(LibVLCSharp 3.10.1 → 3.10.2)。界面与功能没有改动,换的是底层那一套解码/解复用/音频输出。
这一版带来什么
上游 3.0.24 的修复项正好压在本项目吃过亏的位置:
- 编解码:FFmpeg 4.4 → 8.1;新增 APV、Atrac3 / Atrac9 解码
- 解复用:修多个 MKV 崩溃 / 泄漏 / 挂起、AVI 零长度
strd挂起,以及 MP4 / MPEG-TS / Ogg 的边界情况 - 视频输出:修 Direct3D11 adjust filter 与纹理泄漏
- Windows 音频:修 mmdevice 崩溃 / 泄漏 / 死锁
代价:插件树少 3 个文件(上游不再打包 RealRTSP 等),便携版比上一版大约 +3.3 MB。
验证
tools/release-check.ps1全绿三次:Debug / Release / 冒烟三工程 0 警告 0 错误 + 全量 20/20- 便携版载荷与安装目录各自跑了一遍全量 20 步冒烟,都是一次过关
- 在已有的 1.5.0 上原地升级验证:安装目录 670 个文件,与载荷 668/668 逐文件 SHA256 一致
- 卸载后
%AppData%\播放器逐字节没动;依赖扫描没有易受攻击的包
安装
- 安装程序:免 UAC,装到
%LocalAppData%\Programs\全能本地播放器,卸载不删你的设置 / 历史 / 歌单 / 字体 - 便携版:解压即用,不写注册表
- 两个产物都没有代码签名,SmartScreen 会提示"未知发布者"
校验
local-player-1.6.0-setup.exe— SHA256DECC7FE8C46418907CED2A500D967C0994579D80AB4E60776D7103D5BFFF6FF6local-player-1.6.0-portable.zip— SHA256383C9EF5E3E1B11BFCF6CF8B2F97680731C797FCAF436457B813E37E4EB7CDD0
如实说明:上游的修复没有逐条人工验证,也没人工试播 MKV / HEVC / 4K / 多音轨;验证靠的是本项目自己的 20 步冒烟。完整变更见 CHANGELOG。
1.5.0
1.5.0
新增
- 睡眠定时器(
播放 → 睡眠定时器):听完这一首就停/15 · 30 · 60 分钟后停/自定义分钟数…/取消,子菜单第一行写着还剩多久。到点暂停(不是退出程序),状态栏说明是它让播放停的;听完这一首就停在这一首自然播完时不再往下播(优先于单曲循环与「下一首播放」队列)。定时器不落盘。 - 随机播放改成"一轮不重复"(洗牌袋):把列表洗一遍、每首播一次再重洗,换一轮也不会立刻重复上一首。
上一个仍回列表里的上一项(这条没变)。
修复
- 换画面旋转内核时偶发硬崩(
0xC0000005,1.4.0 时期全量 5 次里崩 2 次):根因是每次MediaPlayer.Stop()都会漏掉一整套 libvlc 原生线程(实测每次 +35 个 OS 线程 / +150 个句柄,而且不还回来)——换一次旋转就Stop()一次,攒到上千线程之后某个 libvlc 调用就崩。现在每个旋转值缓存"内核 + 它自己的播放器"、换内核只暂停旧播放器、收尾只释放当前那个;顺带把旋转切换变快了(冒烟第 13 步 26 秒 → 12 秒)。 - 「播放 → 随机播放」菜单项原来点不动(设计器里没
CheckOnClick、也没有 Click 处理器)——已修。 - 构建基线:去掉唯一一处 C# 14 写法、
LangVersion钉成 12.0,.NET 8 SDK 也能构建(0 警告 0 错误)。 - 原地升级不再留旧文件:运行时补丁号变化会让
mscordaccore_amd64_amd64_8.0.*.dll换名字,安装器加了[InstallDelete]先清旧的。
验收
- 全量冒烟仍是 20 步(新检查都挂在第 6 步里),
release-check全绿(148 秒,Debug / Release / 冒烟三个工程 0 警告 0 错误)。 - 便携版在自己的目录里 20 步一次过关;安装程序原地升级 673 个文件、载荷与便携版逐文件 SHA256 一致;安装目录 20 步一次过关;卸载后
%AppData%\播放器15 个文件逐字节没变。 - 已知边界(详见 README):睡眠定时器不落盘、到点只暂停;随机播放的"一轮"从正在播的这一首之后算起;
上一个不是随机历史。
1.4.0:SMTC 补齐按钮与封面(引 WinRT 投影)+ 外挂封面 + 修「播放列表对不上」
1.4.0 · 系统媒体控件补完 + 一条列表显示错的修复
1.3.0 里说好"只做了一半"的那一半(SMTC 的按钮与封面)这一版补上;另外修掉所有者截图报上来的
"播放列表对不上"。全量冒烟仍是 20 步。
系统媒体控件(SMTC)补完(Win 键调出的音量弹窗 / 锁屏上那一块)
- 五个按钮:播放 / 暂停 / 停止 / 上一个 / 下一个 —— 真的接上了,按下去作用在播放上。
- 封面:优先用文件里的内嵌封面,没有就用同目录的
cover.jpg/folder.jpg/front.jpg
这类外挂图(和侧栏封面是同一份判定:cover>folder>front>album…,
不再看文件系统的枚举顺序);切到没有封面的那一首会清掉,不会还挂着上一首的。 - 为此目标框架改成
net8.0-windows10.0.19041.0,SMTC 那一段从"手写 COM"换成 WinRT 投影。
⚠ 代价如实说明:要 Windows 10 2004(19041)以上才有完整能力;更老的系统上程序照常启动,
只是这一段拿不到接口(安静降级,媒体键与任务栏缩略图按钮不受影响)。
安装包 / 便携版因此大了 3.5 ~ 5.7 MB(多了投影程序集)。
顺手修掉的一个真 bug(所有者截图报的"播放列表对不上")
- 列表里加粗的"正在播"那一行停在上一首:真正在播的是下一首,标题栏 / 状态栏 / 时长都对,
只有那一行不动。根因是"列表当前项变了 → 整体重建列表"发生在引擎换过去之前,
重建时引擎路径还是上一首。现在换歌时只把那一行挪过去(O(1),不重建列表)。
已知问题(这一版没修,如实写在这里)
- 画面旋转换 libvlc 内核时偶发原生崩溃(
0xC0000005,整个进程直接没):1.4.0 验收期间
全量冒烟 5 次里崩了 3 次,都在"连着切几种旋转、紧接着切歌"这一步(第七次切换、
第一次复用已经缓存的内核);单独跑旋转检查连跑 3 次没崩,机制还没查清,
记在维护手册的 M8(先做复现探针,再动切换顺序)。
用户碰得到的路径:把六种旋转挨个点一遍、紧接着按「下一个」。 - 没有代码签名:安装包与便携版都是未签名的,SmartScreen 会提示"未知发布者"
(点"更多信息 → 仍要运行")。
验证到哪一层
- 冒烟 20 步全绿,两个产物各自在自己的目录里都跑过全量(便携版一次过关;
安装版第三次复跑过关,前两次一次是上面那个原生崩、一次是桌面歌词真鼠标判据的环境敏感)。 - ⚠ SMTC 有一半只能人眼看:系统界面上按钮画出来没有、按下去系统有没有把事件送过来,
冒烟验不到(它验的是"我们这一侧的事件 → 动作"以及"交给系统的那个文件被系统读了")。
安装与校验
- 安装程序:每用户安装、免 UAC,装到
%LocalAppData%\Programs\全能本地播放器;
卸载不删%AppData%\播放器(设置 / 历史 / 歌单 / 设置方案 / 字体)。 - 便携版:解压即用,不写注册表。
- SHA256:
local-player-1.4.0-setup.exe:51F8B599DBD100FD92A40B19C5935B0C1A0F8A7622BC1F2F1BF35EFD635C25F1local-player-1.4.0-portable.zip:E3AC2DD7A8CAAAFD02E505F1E221D4555C8887F04250E87BDAD2276816F9F8EF
1.3.0:六个新功能(A-B 循环 / 音量均衡 / 下一首播放队列 / 歌单顺序与批量重命名 / 画面旋转翻转 / SMTC 显示)
1.3.0 · 六个新功能
这一版是所有者点名的六件事,分三批做完。每个功能都有断言 + 变异 + 文档,全量冒烟仍是 20 步。
播放
- A-B 循环(
播放 → A-B 循环):把 A / B 两点设在当前时间,越过 B 就跳回 A。
子菜单第一行随时写着当前 A/B(精确到 0.1 秒);A 不早于 B、B 不晚于 A 都如实拒绝并说明原因。 - 音量均衡(normalize)(
播放 → 音量均衡(normalize),默认关):给媒体挂 libvlc 的
normvol滤镜,把忽大忽小的音量拉平。它是媒体级滤镜,切换会重载当前这一首并说明「已从头开始重播以应用」。 - 「下一首播放」队列(列表右键 /
播放菜单):把选中的项排到当前这首后面(最多 20 条、去重),
排进队的行标题前显示▶;自然播完先播队首,列表的当前项不动,队列空了再回到列表继续。
队列不落盘(关掉程序就没了)。
歌单与画面
- 歌单顺序:歌单窗口里拖动一行就能调整歌单顺序,拖完立即写进歌单目录下的
歌单顺序.txt
(纯文本、记事本可查;删掉它就回到按名字排)。窗口与「文件 → 播放列表」菜单都按这个顺序列。 - 批量重命名:多选之后给一个基名,按显示顺序改成
基名 1/基名 2…;
名字非法或撞车时一个文件都不动。 - 画面旋转 / 翻转(
视图 → 画面旋转):不旋转 / 顺时针 90° / 180° / 逆时针 90° /
水平翻转 / 垂直翻转,按文件记住,切换停在原来的位置(只转画面本身,窗口比例与歌词不动)。
系统集成
- 系统媒体控件(SMTC):Win10/11 的音量弹窗与锁屏上显示当前这一首的曲名 / 歌手、
播放状态与进度。⚠ 这一版只做"显示":那几个播放按钮与封面没有做(按钮要一个 WinRT 委托、
封面要异步 WinRT,手写 COM 做不安全——硬做会是"按一下按钮栈错乱")。
系统媒体键不受影响,照旧好用。
顺手修掉的一个真 bug
- 只
Dispose没Close的窗口会留下一个还在跑的界面计时器:它每 20 秒把自己那份旧历史
写回history.json,把别的实例刚写的记录盖掉。这是从"全量冒烟偶发在第 18 步红"一路查出来的,
用户侧触发面很小(正常关窗没事),但会实打实地丢一次调整。
下载
| 文件 | 说明 |
|---|---|
local-player-1.3.0-setup.exe |
安装程序(67.69 MB),装到 %LocalAppData%\Programs\全能本地播放器,免 UAC |
local-player-1.3.0-portable.zip |
便携版(102.13 MB),解压即用;也可用 播放器_DATA_DIR 指定数据目录 |
- 没有代码签名:Windows 会提示"未知发布者"(点"更多信息 → 仍要运行")。
- 卸载不会删用户数据:设置 / 历史 / 歌单 / 设置方案 / 字体都在
%AppData%\播放器,卸载器一个字节都不动。 - 怎么用、有哪些功能、快捷键 → README;
第一次接触 → docs/介绍.md;
这一版装了什么、每条的来龙去脉 → CHANGELOG。
1.2.1 —— 拖动进度条的时间显示 + 调整落盘不再可能丢
1.2.1 —— 修两处真的会咬人的地方
拖动进度条时,"当前时间"不再被播放进度抢回去
所有者报的:播放中拖动进度条,"当前时间"反复跳回真实播放时间("反复显示当成进度")。
根因是那格时间有两个写者:拖动时 OnSeekScroll 写"你要跳到的位置",而界面计时器每 200 ms
用真实播放时间再写一次——UpdateProgress() 里的 if (!_userSeeking) 只护住了滑块取值,
时间标签在护罩外面。现在拖动期间那一格只显示要跳到的位置,松手才真正跳转。
同一小段里顺手收掉两处同源毛病:
- 按住拖到进度条外面(比如下方)就不跟手了——鼠标其实还在捕获中,而
OnMouseLeave
无条件把拖动状态清掉了; - 右键点一下进度条也会 seek 一次、还让计时器停摆——"用户在拖动"以前不分按键。
"调完立刻关程序"不再可能丢掉这次调整
关掉「记住播放进度」之后,按文件的调整(歌词偏移 / 音画 / 字幕延迟)只剩一条落盘路径,
而它在"已经有一次写入在飞"时会直接早退、把这次改动留给"下一次调用"——那个调用可能永远不来。
现在这一次改动一次都不丢,而且退出时那条同步写会先等在飞的那次落地,
免得被更旧的快照后落地盖回去。
完整变更记录(含验收数据、两个产物的 SHA256、以及修的过程中冒烟当场抓出来的一个更糟写法):
CHANGELOG.md
下载哪个
| 资产 | 适合 |
|---|---|
local-player-1.2.1-setup.exe |
日常使用:每用户安装、不弹 UAC、带卸载器、可选桌面图标,可加进「打开方式」候选;自包含,不需要先装 .NET |
local-player-1.2.1-portable.zip |
不想装 / 放 U 盘:解压到一个文件夹直接运行,不写注册表 |
卸载不删用户数据(设置 / 历史 / 歌单 / 设置方案 / 字体都在 %AppData%\播放器)。
安装包没有数字签名,第一次运行会弹 SmartScreen「未知发布者」——这是没买代码签名证书的必然结果。
这一版只修问题、不加功能。六个新功能(A-B 循环 / 音量均衡 / 下一首播放队列 /
歌单窗口拖拽排序 + 批量重命名 / 画面旋转翻转 / SMTC)排在 1.3.0,计划见
docs/1.3.0计划.md。
1.2.0 —— 默认空列表 + 「启动时恢复上次播放列表」开关
默认打开就是空列表 + 「启动时恢复上次播放列表」开关
- 打开程序默认是一张空列表:
播放 → 启动时恢复上次播放列表默认不勾。
不勾时这一次启动算全新一次会话——不恢复上次的列表,也不挂上次的「当前歌单」
(空列表挂着歌单名,往里加两首再点「覆盖保存」就会把整份歌单换成那两首)。
歌单文件一个字节都不动,文件 → 播放列表里点一下就能载入回来;
空着启动时状态栏会说一句:就绪(本次是空列表,可在「文件 → 播放列表」里载入歌单)。 - 勾上之后下次启动恢复上次退出时的列表 + 当前歌单关联。勾上只写设置、下次启动才生效,
不会当场把上次的列表塞进来盖掉正在听的东西。
退出时照旧记录这张列表,所以开关打开后拿到的是"上一次关闭时的那份",不是几周前残留的旧数据。
升级注意(只影响第一次)
开关默认关 + "退出时照旧记录"没变 → 从 1.1.0 升上来时,上次那份列表不会再自己回来
(歌单文件一个字节没动,菜单里点一下就能载入)。如果那份列表没存成歌单又想要回来:
先别关程序,把 %AppData%\播放器\settings.json 里的 RestoreLastPlaylist 改成 true
(或者先把那份 settings.json 备份一份),下次启动它就照旧恢复。
这一版还做了什么
- 设置方案里,新设置项归进「行为」组(勾选窗口和方案文件都跟着更新)。
- 安全网:第 6 步新增一条同一份设置、两次启动的对比检查——
关着时列表必须为空、不能挂歌单名、菜单里不能出现「覆盖保存」入口;
开着时同一个歌单名必须真的恢复出来并有那个入口。四个变异逐个变红。
完整变更记录(含验收数据与两个产物的 SHA256):
CHANGELOG.md
下载哪个
| 资产 | 适合 |
|---|---|
local-player-1.2.0-setup.exe |
日常使用:每用户安装、不弹 UAC、带卸载器、可选桌面图标,可加进「打开方式」候选;自包含,不需要先装 .NET |
local-player-1.2.0-portable.zip |
不想装 / 放 U 盘:解压到一个文件夹直接运行,不写注册表 |
卸载不删用户数据(设置 / 历史 / 歌单 / 设置方案 / 字体都在 %AppData%\播放器)。
安装包没有数字签名,第一次运行会弹 SmartScreen「未知发布者」——这是没买代码签名证书的必然结果。