让 Filemote 保持最新
每一份安装都会在启动时检查一次更新,之后每天一次。接下来会发生什么取决于平台,因为两者的约束 确实不同:Windows 有一个可以询问你的窗口,而 Linux 服务器没有。
Windows:由配置器询问
在 Windows 上,更新由配置器负责,代理刻意保持沉默,这样你永远不会收到两个提示或同时运行两个 安装程序。
当存在更新版本时,你会看到一个提供两个选项的对话框:
- 安装会带进度条下载该版本,然后关闭应用,让安装程序得以替换那些否则被占用的文件。之后的事 由安装程序接手。
- 跳过会记住这个具体版本并不再就它发问。更晚的版本仍会再次提示。
Linux 和 macOS:由代理自己完成
没有可供询问的窗口,因此代理会自行下载并应用更新。
它不会打断你:当有文件正在传输时,它会记录 transfers in progress — deferring to the next check,把更新留到下一个周期。
在替换任何东西之前,代理会检查磁盘剩余空间是否足够,并校验下载文件的 SHA-256。替换二进制文件
之后,它会用 --version 运行新文件并比对其输出;如果这项冒烟测试失败,就恢复先前的二进制文件
并放弃本次更新。
当安装目录属于 root 时
代理以你的用户身份运行,而 /opt/filemote 属于 root,因此它无法安装到那里。它的判断方式是真的
去尝试写入一个文件——在只读挂载和容器中,权限位说谎的情况屡见不鲜——当目录不可写时,它会下载并
校验更新,解压到 /tmp/.filemote-update,并在日志中给出收尾所需的那一条命令:
sudo /opt/filemote/apply-update.sh /tmp/.filemote-update
该脚本会停止服务,在新二进制文件通过冒烟测试之前保留旧的,未通过则回滚,随后刷新 AI 服务源码并 重新启动服务。
1.11.0 及更早版本的压缩包并不包含 apply-update.sh,因此在那些安装上,上面这条命令指向的是
一个并不存在的文件。在你升级到更新的构建之前,请通过重新运行新压缩包中的安装脚本来更新:
tar xzf filemote-<新版本>-linux-x64.tar.gz
cd filemote-<新版本>-linux-x64
sudo ./install.sh
重新运行脚本会保留你的设置和已下载的模型。
更新会替换什么
只有两样:代理的二进制文件和 AI 服务的源码。这条规则采用白名单而非排除列表,因此将来压缩包结构 如何变化,都不会悄悄开始覆盖别的东西。
更新永远不会碰:
app_settings.json—— 你的登录信息、已配对的令牌和共享的文件夹;models—— 已下载的 AI 模型,也就是最昂贵的那部分;knowledge_base—— 你索引过的一切;- 记录已安装了哪些 Python 依赖的标记文件。
Windows 上同样的保证出于另一个原因:就地升级从不运行卸载程序,所以私有 Python、模型和设置都会 保留。
如果新版本更改了 Python 依赖要求,AI 服务会察觉到,并在下次启动 AI 时重新安装它们。
便携版与 ClickOnce
- 便携版没有更新机制。请下载新的压缩包并替换整个文件夹。
- ClickOnce 版本会在每次启动时自我更新——它存在的全部理由 就是这个。
如何关闭
在 app_settings.json 中把 UpdateCheckEnabled 设为 false 即可完全停止检查,或在 stable
与 beta 之间切换 UpdateChannel。这两个字段都在
手动配置代理中有说明。
偶尔会有版本被标记为低于受支持的下限。这类版本会以「请尽快安装」记入日志——通常是安全修复——即使 你平时习惯推迟更新,它们也值得立即处理。
更新于 2026-07-31