DreamingFish Updater/日常维护

日常维护

恭喜你完成了配置!日常维护其实很轻松:改文件、检查、发布;需要时处理问题版本、撤回操作、回滚、备份、升级,一件件来就好。下面的界面以桌面版为例(终端版的网页管理界面完全一样),交互式命令行的对应做法也写在旁边。

日常更新客户端流程#

日常更新其实就三件事:给客户端加东西、从客户端删东西,或者放弃管理某个文件。不管哪一件,改完之后都去“改动与版本”检查并发布,玩家下次启动时就会自动跟上。

有一点要记住:文件和维护方式改完、保存了,不等于已经发给玩家。左边活动栏“改动与版本”上的小圆点、项目栏里的“待发布”、状态栏里的“几项待发布”,都是在提醒你还有改动没发出去。

为客户端增加文件#

想给玩家加新模组、新配置?跟着这几步走:

  1. 把文件放进标准目录里对应的位置——新模组就放进 mods,新配置就放进 config。在自己电脑上的文件,到“文件”页点“导入文件”(或者直接拖进窗口),在导入清单里先“上传并检查”,再“确认导入”;已经在服务器上的文件,直接放进标准目录,点工具栏的“…”→“刷新文件列表”就行。
  2. 打开“改动与版本”,进来时会自动重新检查。在待发布改动里确认新文件都出现了。
  3. 在右边的“准备新版本”里填好版本号(会按上一个版本自动建议,比如 1.0.1 之后建议 1.0.2)和更新说明,点“发布”。

发布后,玩家下次启动时更新器就会下载这些新文件、放进对应位置——不用玩家手动做任何事。终端的话,把文件放进标准目录后选主菜单 [4] 扫描并发布整合包 就好。

i
给模组换个版本

模组升级的时候,不用先删旧的再放新的:直接导入新版本的 jar,导入清单会认出它和旧文件是同一个模组,默认选“替换旧模组”。确认导入后,旧文件会被归档,原来设好的维护方式和可选内容也会沿用。发布时,旧文件的移除会自动算进这次改动里。

为客户端删除文件#

想从玩家客户端移除某个文件或模组?在“文件”页选中它,点底部浮动栏的“移出”(或者按 Delete)。管理端会先问你:这个文件在玩家电脑上怎么处理?

移出文件时,先决定玩家电脑上的副本怎么处理
  • 移除玩家副本:玩家下次启动时,这个文件会先被备份,再从游戏里移出。
  • 停止维护,留给玩家:服务器不再管理这个文件,玩家电脑上已有的副本原样保留,可以继续使用,之后由玩家自己管。

直接在服务器的标准目录里删文件也可以。这时候到“改动与版本”里,被删的文件后面会有一个下拉框,同样在“移除玩家副本”和“留给玩家”之间选一个;终端的 [4] 也会逐个问你。

!
什么时候选留给玩家?

当你只是“不想再更新这个文件”、而不是“玩家必须删掉它”的时候。比如某个模组不再维护了,但玩家留着玩没影响——选留给玩家,玩家就能保留它,服务器也不再推送更新。注意两点:这个选择是对所有玩家生效的,和玩家在自己电脑上单独豁免文件不是一回事;另外,强制同步文件夹里的内容只能移除,不能留给玩家——真想交还给玩家,先把那个文件夹改回普通同步,再检查并发布。

选了“移除玩家副本”之后,这个要求会一直有效,不只是对正好经过这次更新的玩家。比如 1.0 里有模组 D,2.0 把 D 移除了:一个拿着 1.0 整合包、到 2.0 才第一次进服的玩家,D 也会被移走;玩家后来又手动把 D 放回去,下次启动还是会被移走。玩家在本机豁免了、停用了,或者改了文件名,也绕不过去。以后你重新把 D 加回整合包并发布,这个移除要求就自然结束了。

i
发布是不可变的

内容有误就修正文件再发新版本,不要修改旧版本;也可以快捷回滚,把某个历史版本作为新版本重新发布。玩家端会自动发现并升级到最新版本,低于最低玩家端程序版本的玩家端会先更新程序再更新整合包。

调整维护方式与可选内容#

某个文件后来想换一种维护方式,选中它,在底部浮动栏点一下就行;想看得更清楚,双击文件或按 Ctrl + I 打开右边的详情卡片,路径、版本、模组 ID、现在用的维护方式,以及这个方式是单独设置的还是跟着上级文件夹,都写在里面。

文件详情:路径、版本、模组 ID 和维护方式都在这里

光影、小地图、材质这类内容,不是每个玩家的电脑都带得动,可以做成可选内容:在项目栏的“可选内容”旁边点 +,起个名字(比如“光影与画质”),写一句说明,再决定玩家没主动选过时默认装不装;然后选中这些文件,点底部浮动栏的“可选内容”加进去。玩家在玩家端里可以整组开关,之后会一直记住自己的选择。强制同步的内容不能放进可选内容。

终端里,维护方式用 dfs-admin project policy preset,可选内容用 project policy group 和 project policy group-members,用法见「创建第一个项目」。和其他改动一样,这些设置也要检查并发布之后才会对玩家生效。

之前留给玩家的文件,后来出问题怎么办?#

比如 1.0 发过模组 B,2.0 你选了“停止维护,留给玩家”。过了一阵才发现 B 的这个版本会让游戏崩溃,可这时候标准目录里已经没有它了,想删也没处删——去历史问题文件里处理就行:

  1. 打开“改动与版本”,点项目栏里的“历史问题文件”(文件页的“…”菜单里也有入口)。
  2. 用上方的下拉框选当时提供 B 的发布版本,也可以直接搜索文件名。
  3. 勾选有问题的那个版本,在底部写一句问题说明(比如“会导致客户端崩溃”,玩家能看到这句话),点“处理坏版本”,再确认保存。
  4. 回到“待发布改动”,确认问题处理出现在预览里,再发布新版本。
历史问题文件:从当时的发布里选中坏版本,写上原因

玩家下次在线检查到这个版本后,匹配的坏文件会先备份,再移出游戏;豁免、停用或改名都绕不过去。管理端是按文件内容来认的,模组还会对照模组 ID 和版本,所以正常的新版本不会因为文件名一样就被一起移走。

如果只是配置文件改坏了,想把玩家那份换成标准目录里的正确版本,就选中标准目录里的那个文件,在详情卡片或右键菜单里点“修复玩家副本”:可以选“每个玩家修复一次”,或者“只修复选中的历史坏版本”,写好修复说明再保存。玩家原来的文件同样会先备份。

i
保存了处理,不等于已经通知玩家

问题处理和普通删文件一样,要检查并发布之后才生效。离线的玩家还不知道你刚发的新版本;已经在运行的 Minecraft 也不会被远程卸载模组,要等下一次启动检查。这些处理要求在你主动结束之前一直有效,历史问题文件页最下面的“正在生效的处理要求”里可以看到它们,不再需要时点“结束要求”。

更新玩家端程序#

玩家端程序是另一条独立的发布线,和整合包内容互不影响:平时更新模组、改配置,只重新发布整合包就好。玩家端程序是可以自更新的——更新器本身出了新版本时,到“发放”→“玩家端程序”上传新的发行 ZIP,检查后确认发布;玩家端下次启动会自动检查并安装,不用再把客户端重新发给玩家。同版本或者更低的版本不能重复发布。

想给玩家推送新闻、改标题、换配色,现在不用发布玩家端程序了:打开“玩家端设计”,中间就是真实的玩家端预览,右边改标题与品牌、外观与背景、公告与页面和启动音乐。文字、配色、公告和页面点“保存”以后,玩家下次启动就会自动拿到;背景图和音乐属于文件资源,保存后还要像普通文件一样检查并发布一次。终端用主菜单 [12]。

玩家端设计:中间是真实的玩家端预览,右边改文字和配色

真正需要重新分发玩家端的情况只有一种:Bootstrap Agent 更新了。Agent 挂在启动器里、由启动器在游戏加载前先拉起,没法像玩家端那样自更新;而 Agent 一般不会更新,除非有重大 Bug——所以绝大多数情况下,玩家端程序都能自己追上最新版。

玩家端程序更新拥有独立的签名清单,安装失败时会回退到上一个已验证版本,不会和整合包内容混在一起。发布整合包时如果用到的功能要求更高的玩家端版本,玩家端会先更新程序、再更新整合包。

改错了设置,或者想撤回操作?#

不用凭记忆一项项改回去。通过管理端做过的导入、替换、移出、改维护方式和发布,都会记在操作记录里。命令栏右上角的“操作记录”、文件页项目栏的“维护”分组、“…”菜单和 Ctrl + K 命令菜单都能打开它。

操作记录:每次导入、移出、改设置和发布都会留下记录
  1. 搜索文件名或设置,找到那次操作,点“查看几项变化”看看它具体改了什么。
  2. 点“撤销”,管理端会先列出这次会恢复什么:移出哪些新文件、放回哪些旧文件,或者把设置改回什么值。
  3. 确认后恢复。记录会标成“已撤销”,以后还能查到。

比如把一个模组从 1.0 换成了 1.1,发现换错了:找到这次导入记录撤销,1.0 会被放回来,新导入的 1.1 会被移出。如果文件后来又被改过,管理端会提醒你先处理后面的操作,免得把新的修改一起覆盖掉。直接在服务器上改文件,管理端是不知道的,这类改动不会出现在操作记录里。

如果只是维护方式点乱了,还有一个更省事的办法:在操作记录上方点“恢复当前发布设置”(文件页“…”菜单里叫“恢复版本设置”)。它会把维护方式、可选内容和问题处理这些设置,全部恢复成当前已发布版本的样子,并且逐项列出“现在 → 恢复后”,看清楚再确认。

分清楚这三种“撤回”:恢复设置只管设置,不动文件;要恢复导入或移出的文件,用操作记录里的撤销;要把已经发给玩家的内容换回旧版,用下面的回滚发布。已经发布过的变化撤回以后,还需要再检查并发布一次,玩家才会收到。

终端 · 操作记录与恢复
dfs-admin project operations dreamhaven
dfs-admin project operations dreamhaven --undo 操作ID
dfs-admin project operations dreamhaven --restore-published

查看发布历史与回滚#

打开“改动与版本”,点项目栏里的“发布版本”就能看到发布历史。历史发布是签名后的只读记录——「回滚」不会覆盖旧版本,而是以所选历史内容创建一个新的、更高序号的发布:

发布版本:选中历史版本,点“以此版本创建回滚发布”

选中想回到的那个版本,点“以此版本创建回滚发布”,填一个新的版本号和回滚说明,确认后玩家端就会收到一个“回到旧版本”的新发布。回滚不会悄悄取消你已经设置的问题版本处理:旧模组如果是坏版本,就不会因为点了回滚又被装回去。回滚前也看一眼预览里的移除和问题处理。

终端选 [5] 查看发布历史(新版本在前),会列出序号、显示版本、发布 ID、时间和更新记录:

查看发布历史 · [5]
发布历史(新版本在前):
  #2  1.0.1  r000002-20261014-213012-ab12cd34  2026-10-14T21:30:12Z
       新增 Sodium Extra;移除小地图;DreamingFish Core 改为强制同步。
  #1  1.0.0  r000001-20261014-161030-ab12cd34  2026-10-14T16:10:30Z
       首次发布:接入模组与基础配置。

回滚的终端命令:

回滚命令
dfs-admin project rollback dreamhaven r000001-20261014-161030-ab12cd34 --version 1.0.2 --changelog "回滚到 1.0.0" --yes

外部托管:带宽不够时#

玩家一多,服务器的上传带宽可能就不够用了。这时候可以把更新内容导出成一个静态目录,交给别的地方来分发:到“发放”→“外部托管”,三张卡片选一种——仅导出(生成静态目录,自己放到任意 HTTP 服务器上)、WebDAV(导出后用 WebDAV 或 HTTP PUT 上传),或者对象存储(导出后上传到兼容 S3 的存储桶,比如 OSS、R2)。

外部托管:仅导出、WebDAV 或对象存储

导出以后,记得把项目的“玩家更新地址”改成实际托管的地址,再从另一台电脑测试一次。上传用的账户和密钥只用于这一次上传,管理端不会保存,也不会进到玩家包里。第一次请选一个空目录;以后选同一个目录导出,就只会增量更新。终端用主菜单 [13] 导出。

备份与恢复#

如果你特别看重安全性,可以给管理端做加密备份——它包含项目数据、发布记录和签名私钥,跨机器迁移或保护重要环境时用得上(只有交互式命令行提供,桌面版和网页管理界面没有)。日常维护不做备份也没有关系。创建备份:

创建加密备份
dfs-admin backup create --output D:\备份\dreamingfish-20261014.dfb

密码从环境变量 DFS_BACKUP_PASSWORD 读取;未设置时会在终端中交互式输入并确认。恢复备份:

恢复加密备份
dfs-admin backup restore D:\备份\dreamingfish-20261014.dfb --force
!
不要只复制数据库文件或只导出私钥

备份要整个做、整个恢复。--force 会替换现有的管理数据目录,恢复前请确认没有重要新数据。

升级管理端#

  1. 下载新版管理端并解压,先停掉正在运行的旧管理端。
  2. 把旧版根目录中的 data 文件夹、management-settings.json 和 management-web-auth.json(如果注册过 Web 账户)移动或复制到新版根目录。
  3. 启动新版管理端,程序会自动读取原有数据。启动后看一眼项目、文件目录和下载服务是不是都正常。

桌面版更省事:安装版直接运行新的安装程序,便携版退出后替换程序文件,管理数据不用动。

!
从 0.1.x 升级到 0.2.1

先发布 0.2.1 玩家端程序,再发布用到新维护方式的整合包——旧玩家端会先自己升级。以前已经“从玩家端删除”过的文件,升级后第一次检查时会迁移成一直有效的移除要求(以前选了“放弃管理”、留给玩家的不受影响),第一次发布前先在预览里看清楚。项目一旦用新版发布过,就不要再用旧管理端发布了。

多项目维护#

一个管理端可以维护多个整合包项目。桌面版和网页管理界面在项目栏最上面切换项目,交互式命令行操作前会先列出项目让你选择,直接回车使用带 * 的默认项目;每个项目拥有独立的显示信息、公共地址、发布历史和签名身份,不同项目的玩家实例不要混用绑定文件,也不要把另一个项目的部署包合进来(详见「创建第一个项目」)。