Skip to content

Releases: non266/local-player

1.8.0

Choose a tag to compare

@non266 non266 released this 24 Oct 15:04

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
    SHA256 AC0F0E6C88A0A5D4F334BCB4F4CB57FCA84213DF97FAC68B9CEFFE83A40B3588
  • local-player-1.8.0-portable.zip — 95.17 MB
    SHA256 8460AD0F69C068DFBE3BA758A6D7DACB9D52DC299F17155BEF2141F7029EB105

安装到 %LocalAppData%\Programs\全能本地播放器(免 UAC);卸载不会动
%AppData%\播放器 里的设置 / 历史 / 歌单 / 设置方案 / 字体。

1.7.0

Choose a tag to compare

@non266 non266 released this 22 Oct 15:53

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

Choose a tag to compare

@non266 non266 released this 19 Oct 16:08

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 — SHA256 E335E2F98C57577C4FB94C87F1A848993D7E0FD0A3C2F762FCCDF3DB6390C35A
  • local-player-1.6.2-portable.zip — SHA256 CAB7C38BF3AC31CBD7F6FBF70F94CCC35F164575F4AE9D18C46B6BD501A6568B

如实说明:体积与 1.6.1 几乎完全相同(没有二进制层面的功能变化);这一版没有任何新能力,可以跳过不装。完整变更见 CHANGELOG。

1.6.1

Choose a tag to compare

@non266 non266 released this 18 Oct 14:12

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 — SHA256 1D831AD0070953AB81F97152BF145FA9D0368170CD38EF5C2F1C7E205DD73058
  • local-player-1.6.1-portable.zip — SHA256 A302A8BF0777279DB22739CB74049B0943BD2F950EB9C4257E8F99F238A2771C

如实说明:界面观感 / 字体 / DPI / 渲染没有人工验过,只有构建 + 20 步冒烟;换运行时后如果遇到渲染相关的怪问题,先怀疑这里。完整变更见 CHANGELOG。

1.6.0

Choose a tag to compare

@non266 non266 released this 18 Oct 13:38

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 — SHA256 DECC7FE8C46418907CED2A500D967C0994579D80AB4E60776D7103D5BFFF6FF6
  • local-player-1.6.0-portable.zip — SHA256 383C9EF5E3E1B11BFCF6CF8B2F97680731C797FCAF436457B813E37E4EB7CDD0

如实说明:上游的修复没有逐条人工验证,也没人工试播 MKV / HEVC / 4K / 多音轨;验证靠的是本项目自己的 20 步冒烟。完整变更见 CHANGELOG。

1.5.0

Choose a tag to compare

@non266 non266 released this 17 Oct 14:46

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 投影)+ 外挂封面 + 修「播放列表对不上」

Choose a tag to compare

@non266 non266 released this 10 Oct 15:01

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:51F8B599DBD100FD92A40B19C5935B0C1A0F8A7622BC1F2F1BF35EFD635C25F1
    • local-player-1.4.0-portable.zip:E3AC2DD7A8CAAAFD02E505F1E221D4555C8887F04250E87BDAD2276816F9F8EF

1.3.0:六个新功能(A-B 循环 / 音量均衡 / 下一首播放队列 / 歌单顺序与批量重命名 / 画面旋转翻转 / SMTC 显示)

Choose a tag to compare

@non266 non266 released this 09 Oct 13:04

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 —— 拖动进度条的时间显示 + 调整落盘不再可能丢

Choose a tag to compare

@non266 non266 released this 08 Oct 18:39

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 —— 默认空列表 + 「启动时恢复上次播放列表」开关

Choose a tag to compare

@non266 non266 released this 08 Oct 17:55

默认打开就是空列表 + 「启动时恢复上次播放列表」开关

  • 打开程序默认是一张空列表:播放 → 启动时恢复上次播放列表 默认不勾。
    不勾时这一次启动算全新一次会话——不恢复上次的列表,也不挂上次的「当前歌单」
    (空列表挂着歌单名,往里加两首再点「覆盖保存」就会把整份歌单换成那两首)。
    歌单文件一个字节都不动,文件 → 播放列表 里点一下就能载入回来;
    空着启动时状态栏会说一句:就绪(本次是空列表,可在「文件 → 播放列表」里载入歌单)。
  • 勾上之后下次启动恢复上次退出时的列表 + 当前歌单关联。勾上只写设置、下次启动才生效,
    不会当场把上次的列表塞进来盖掉正在听的东西。
    退出时照旧记录这张列表,所以开关打开后拿到的是"上一次关闭时的那份",不是几周前残留的旧数据。

升级注意(只影响第一次)

开关默认关 + "退出时照旧记录"没变 → 从 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「未知发布者」——这是没买代码签名证书的必然结果。