花笺1.1.0应用内更新揭秘:检查、下载、安装背后Windows四层保障机制全解析 📅 发布时间:2026/9/2 15:11:12 👁 浏览次数: 花笺1.1.0应用内更新揭秘检查、下载、安装背后Windows四层保障机制全解析【免费下载链接】floral-notepaper花笺轻量优雅的跨平台桌面便签工具支持 Markdown 编辑与预览项目地址: https://gitcode.com/gh_mirrors/fl/floral-notepaper花笺Floral Notepaper是一款轻量优雅的跨平台桌面便签工具支持 Markdown 编辑与预览。从 1.1.0 版本开始它新增了应用内更新能力在设置里一键检查、下载并安装更新不用再手动去 Release 页面翻找安装包。更难得的是Windows 端为这条更新链路准备了四层保障机制——安装回滚、注册表备份、进程校验和暂存目录保护让更新翻车这件事有了兜底。本文带你完整看懂这套机制。一、1.1.0 应用内更新带来了什么在 1.1.0 之前升级花笺要自己走一遍打开 Release 页 → 找对应平台的安装包 → 下载 → 覆盖安装的完整仪式。现在这套流程被搬进了应用内部详见 1.1.0 版本说明✅双更新源同时支持 GitHub Release 与 Mirror酱 两个版本信息源可填写 Mirror酱 CDK 切换下载通道✅自动 手动双模式支持按设定频率自动检查更新也可在关于面板手动触发✅完整可控流程检查、下载、安装、取消一个不少下载过程中随时可取消✅安装前自动保存安装更新前花笺会尝试自动保存所有未保存的笔记多开的小窗便签一个都不会漏✅Windows 兜底安装回滚、注册表备份、进程校验、暂存目录保护四重保障下文详解。二、更新检查、下载与安装的完整流程整个更新系统由 src-tauri/src/updater/mod.rs 统管状态、日志、下载包都放在独立的updates目录里分为downloads、staging、logs三个子目录。更新检查两个源一个偏好检查逻辑在 src-tauri/src/updater/check.rs 中。你可以设置Mirror酱优先或GitHub 优先应用会按偏好顺序查询版本信息拿到最新版号、下载链接和文件哈希。自动检查的频率多少小时查一次在设置里可调相关界面代码位于 src/features/update/UpdateSettingsSection.tsx。安全下载大小 SHA256 双重校验下载模块 src-tauri/src/updater/download.rs 不只是把文件拉下来下载中的任务可以随时取消这是三种任务里唯一可取消的校验文件大小与SHA256 哈希是否和清单一致防止下载到半截或被篡改的安装包下载产物默认保留 3 天过期自动清理不会越积越多。安装前还会再验一次哈希和大小见 helper.rs 的 validate_request双保险。三、Windows 四层保障机制全解析Windows 下的安装由一个独立的更新助手update helper进程执行核心代码在 src-tauri/src/updater/helper.rs。为什么需要独立进程因为 Windows 不能覆盖正在运行的floral-notepaper.exe。主程序把接力棒交给助手后自己退出助手完成安装再拉新版本重启——整个过程有四道防线。第一层安装回滚失败自动恢复旧版动手装新版之前助手会先把整个安装目录原样备份到回滚存储区见 prepare_windows_rollback_plan。之后无论哪一步出事——安装程序报错、目标文件没出现、版本对不上、新程序启动失败——都会触发 rollback_windows_update把备份目录里的旧文件完整拷回去让应用恢复到你更新前的样子。这意味着装到一半蓝屏/掉电这类场景下重开机器后你面对的仍是能用虽然旧的花笺而不是一堆残缺文件。第二层注册表备份卸载信息也回得去Windows 的设置 → 应用里能列出花笺靠的是注册表Uninstall键。如果只回滚文件不回滚注册表新版写入的卸载信息就和旧版文件对不上了。因此助手会用系统自带的reg export把匹配的卸载注册表项导出成 .reg 备份文件backup_windows_registry_state一旦回滚再用reg import原样导回restore_windows_registry_backup。文件、注册信息一起回到原点。第三层进程校验确保真的退干净、真的装上了这一层管两头装之前助手不会立刻写文件而是先确认主进程确实退出了——先给 5 秒优雅缓冲不够再发强制结束信号并等待wait_for_process_exit避免程序没退干净文件被占用写一半装之后用 Windows API 直接读取新安装可执行文件的内嵌版本信息与目标版本号逐一比对verify_windows_installed_version。版本号对不上就判定失败并回滚——防止安装程序说成功了其实文件还是旧的。第四层暂存目录保护助手自己也自带保险助手可执行文件不会直接运行主程序目录里的原件而是先复制到staging暂存目录stage_windows_helper_copy连运行时依赖的 DLL 一起拷。好处是即使安装覆盖了主程序目录正在干活的助手也不受影响。此外还有两个配套设计标记文件握手助手用ready/done/relaunching标记文件向主程序汇报进度任何时刻断电重启后都能从标记推断出进行到哪一步了看门狗进程主程序还会再启一个 Watchdog 模式助手盯着干活的助手execute_watchdog——万一助手卡死 30 分钟没交出完成标记看门狗会把状态标记为失败并拉起旧版本保证用户永远有东西可打开。而每次启动时staging里的旧暂存文件会被无条件清理cleanup_staging_entries暂存区不会残留僵尸文件。四、小结为什么这套更新值得信任防线防什么安装回滚安装失败 → 旧版文件完整恢复注册表备份卸载信息错乱 →reg import原样还原进程校验文件被占用 / 装完版本不符暂存目录保护助手自身被覆盖 / 卡死无响应看门狗兜底配合 SHA256 校验、双更新源和安装前自动保存笔记1.1.0 的花笺把更新这件容易翻车的事做成了一个环环相扣的闭环。官方也留了句话链路较多如遇到异常请保留现场并提交 Issue。感兴趣的话可以从 src-tauri/src/updater/ 目录读起check.rs管检查、download.rs管下载、install.rs与helper.rs管安装——四层保障的实现都摊开在这几个文件里欢迎深挖 。【免费下载链接】floral-notepaper花笺轻量优雅的跨平台桌面便签工具支持 Markdown 编辑与预览项目地址: https://gitcode.com/gh_mirrors/fl/floral-notepaper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考