让 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

没有解决 —— 联系支持团队