Skip to content

VHDX 订单场景化操作手册 ​

本页把 VHDX 订单从“看懂字段”进一步写成可以逐步执行的维护手册。它回答三个问题:什么时候应该使用 VHDX 订单、如何在网页编辑器中建立一份可回读的配置、出现下载/校验/挂载/启动问题时应该停在哪一层。

本页只使用占位符,不包含真实密码、下载地址、校验值、机台路径或任何凭据。实际值必须来自当前发布说明和有权限的维护人员;聊天截图、旧配置和别人的机台目录不能自动作为配置来源。

聊天经验补充:为什么要区分镜像、热重载和恢复盘 ​

现场讨论里常把“做一个镜像”“用订单挂载镜像”“整盘恢复”和“热重载切换”混成同一件事。它们的可见结果不同:订单镜像用于内容/分支交付,整盘恢复用于把机台恢复到可启动状态,热重载只是一次切换动作。一个动作卡住时,不要用另一个动作覆盖它。

历史经验还提示:差分镜像架构下,部分设置可能在切换后没有持久化;更新公告可能要求关闭热重载,或要求下载完成后再用冷重启/热重载应用。以当前公告为准,保存配置后要回读设置,不要只凭启动画面判断成功。

先理解“订单”和“安装项”的关系 ​

自定义订单编辑器的顶层是一个数组。数组中的每个对象是一个“订单”,订单里的 install 又是一个安装项数组。页面上的“订单 1”“订单 2”对应顶层数组序号;“安装项 1”“安装项 2”对应某个订单内的安装项序号。

可以把它理解成:

text
订单列表
├─ 订单 A:一个可识别的内容/镜像组合
│  ├─ 安装项 A1:主文件或主镜像
│  ├─ 安装项 A2:资源或补丁
│  └─ install_mklink:该订单的路径映射
└─ 订单 B:另一个独立组合
   └─ 安装项 B1

订单本身决定名称、路径、是否删除、是否可选、是否使用 VHDX、时间和启动方式;安装项决定具体下载文件、校验、大小、镜像文件名和安装项级时间。只修改安装项而忘记订单级开关,可能得到“文件下载了但不会被选择”的结果。

VHDX 与普通压缩包的选择 ​

网页提供“填入压缩包示例配置”和“填入 VHDX 示例配置”两个按钮。它们的用途是展示字段形状,不是生产安装器,也不是授权配置生成器。

判断项普通压缩包订单VHDX 订单
顶层 is_vhdx关闭开启
主要文件压缩包/普通文件镜像文件及配套安装项
密码位置安装项的 pwd 可能使用顶层 vhdx_pwd 可能需要,同时安装项密码仍可独立存在
文件名主要由 name/URL 识别需要额外核对 vhdx_name
路径关系解压到 install_path镜像挂载、订单路径和映射需要一起核对
启动关系不一定进入侧载常与 settings.sideload 和运行路径配套
典型风险URL、Hash、大小、解压路径镜像匹配、密码、挂载、映射、分支和启动入口

如果管理员没有明确要求镜像方案,不要为了“看起来更高级”打开 VHDX 开关。把一个普通压缩包订单改成 VHDX 订单,并不会自动生成镜像,也不会修复缺失内容。

开始前的只读准备 ​

在打开编辑器前保存以下信息:

  1. 当前订单配置的完整离线副本;
  2. 当前健康数据和最后上报时间;
  3. 当前侧载分支、订单列表、可选列表和黑名单摘要;
  4. 目标机台磁盘空间和回滚介质状态;
  5. 管理员提供的目标订单清单、安装项清单、镜像名、Hash、大小、时间和密码来源;
  6. 本次维护窗口和现场负责人。

不要把这些资料全部粘贴到公开聊天。反馈时只需要脱敏名称、时间、状态和错误文字;密码、访问码和完整路径放在受保护的位置。

打开编辑器时的可见行为 ​

点击“自定义订单配置”卡片的“编辑配置”后,弹窗会把当前 JSON 加载到草稿。打开时:

  • 没有内容时显示空数组;
  • 顶层不是数组时不能当作有效订单列表保存;
  • install 不是数组时,页面显示为空安装项区域;
  • install_mklink 不是对象时,页面显示为空映射区域;
  • 文本字段不是字符串时按空文本显示;
  • 开关字段不是布尔值时按关闭显示;
  • 数字字段不是有限数字时按 0 显示。

这是一种编辑器可见的规范化,不是原始配置已经正确。遇到历史配置或未知来源的 JSON,先保留原文,再决定是否允许页面重写。

编辑器打开后,父页面重新刷新配置通常不会中断当前草稿。也就是说,弹窗里的值可能比页面背后的最新回读旧。多人维护时,保存前关闭再打开一次是最安全的冲突检查。

场景一:从空数组建立一份 VHDX 订单 ​

第一步:添加订单 ​

点击“添加订单”。页面在数组末尾增加一张“订单 N”卡片,订单数量加一。此时没有任何下载发生,空订单也不应直接保存到生产配置。

先填写:

  • 订单名称:使用稳定、唯一、便于列表匹配的名称;
  • 描述:写用途、批次或维护说明,不写凭据;
  • 安装路径:填写目标机台实际可用的订单根目录。

名称一旦被用于可选列表、黑名单、删除列表或侧载选择,后续修改就不只是改标签,还需要同步检查这些列表。

第二步:打开 VHDX 订单 ​

打开“VHDX 订单”开关。然后逐项确认:

  • 订单确实是镜像方案;
  • vhdx_pwd 由管理员提供且属于该镜像;
  • 后续每个安装项是否需要 vhdx_name;
  • 是否启用侧载入口;
  • 是否需要订单级或安装项级映射。

只打开开关不代表镜像已经存在。不要在没有安装项的情况下先保存,再用“看到了订单”作为成功结论。

第三步:填写顶层字段 ​

页面标签对应字段填写原则
订单名称name唯一、稳定、可被列表精确匹配
描述description说明用途和批次,不写秘密
安装路径install_path目标机台可用磁盘上的订单根目录
删除项is_delete正常安装保持关闭
可选安装项is_option只有需要通过可选列表选择时才开启
VHDX 订单is_vhdx与发布物类型一致
VHDX 密码vhdx_pwd只填当前镜像对应值
订单时间current.order_time与维护说明使用相同时间约定
发布时间current.release_time允许后续应用的时间

时间输入框是文本输入,页面示例使用类似 2006-01-02T15:04:05 的形状。不要把本机当前时间随意写进去,也不要混用时区。

第四步:配置 VHDX 安装项 ​

点击“添加安装项”,每一行包含:

页面输入对应字段核对点
名称install[].name进度列表中的可识别名称
Hashinstall[].hash发布说明中的完整校验值
URLinstall[].url当前批次的受信来源
密码install[].pwd如果该安装文件单独有密码则填写
大小install[].size字节数,必须保持数字语义
VHDX 名称install[].vhdx_name与实际镜像文件名一致
订单时间install[].order_time安装项级下单时间,可按约定留空
发布时间install[].release_time安装项级发布时间,可按约定留空

VHDX 订单最容易出错的是把 name、vhdx_name 和 URL 文件名当作同一个东西。它们在页面上是三个不同输入:

  • name 是管理/状态/列表匹配名称;
  • vhdx_name 是镜像文件名或镜像对象名;
  • URL 是下载来源。

三者可以相似,但不能因为相似就任意互换。

第五步:选择订单级设置 ​

订单级映射卡片有开关、模式、源路径和目标路径。关闭时字段可以保留,但不应按启用映射理解。模式是数字输入,网页没有完整的枚举说明;没有经过验证的模式值时保持管理员给出的值,不要猜一个非零数字。

settings.sideload ​

侧载卡片有开关和运行路径。开关决定该订单是否可能出现在侧载选择列表,运行路径决定启动入口。路径所在盘必须在启动阶段可用;“下载完成”不能证明运行路径存在。

“添加映射”会增加键/值一行。修改键时页面会删除旧键并建立新键;修改值只改变当前值;删除映射只改变订单 JSON,不删除磁盘上的原目录。

使用前确认:

  1. 键和值的方向来自管理员验证过的样例;
  2. 源目录存在且可读;
  3. 目标目录属于当前订单;
  4. 不会覆盖其它订单的目标;
  5. 多个映射之间没有重叠;
  6. 回滚时知道要恢复哪一组映射。

不要用“键/值看起来合理”替代测试机验证。映射错误常表现为下载成功、启动成功但内容缺失或写入错误位置。

场景二:使用 VHDX 示例理解结构 ​

点击“填入 VHDX 示例配置”前,如果当前已有订单,页面会要求确认是否替换全部内容。确认后只替换当前草稿,不会立即改变机台。

安全用法:

  1. 打开编辑器并保存原始 JSON;
  2. 点击示例按钮,观察字段层级;
  3. 不复制示例中的真实字符串;
  4. 用当前发布说明逐项替换名称、路径、密码、Hash、URL、大小和时间;
  5. 删除不需要的安装项和映射;
  6. 检查 JSON 有效;
  7. 必要时关闭弹窗重新打开确认草稿仍是预期内容;
  8. 只有在维护窗口内点击“保存配置”。

点击示例按钮不是“恢复默认”,也不是“检查机台”。如果误点,点击取消或关闭弹窗即可放弃草稿。

场景三:多安装项 VHDX 订单 ​

一个订单可以有多个安装项。适用于内容被拆成主文件、资源文件、差分文件或多个镜像的情况。建立多安装项时:

  • 每一项使用不同且可读的 name;
  • 每一项的 hash 与 size 配对;
  • 只有真正是镜像的安装项填写对应 vhdx_name;
  • 订单级时间和安装项级时间不要互相矛盾;
  • 不要把主包完成当成全部安装项完成;
  • 删除某一行前先确认它不是其它映射的来源。

页面中的“安装项 N”只是数组序号。删除中间一项后,后面的序号会前移;反馈时最好同时写名称而不只写序号。

场景四:可选 VHDX 订单 ​

如果订单开了“可选安装项”,它还需要出现在机台控制区的“订单项可选安装列表”中。排查顺序:

  1. 订单名称是否拼写完全一致;
  2. is_option 是否真的开启;
  3. 可选列表是否使用英文逗号分隔;
  4. 名称是否误写进黑名单;
  5. 是否有删除列表影响同一名称;
  6. 保存列表后是否刷新配置;
  7. 订单是否已经到达 release_time;
  8. 目标分支是否允许该订单。

可选列表里的名称是匹配值,不是描述文字。不要写数组、不要把说明括号一并复制,也不要使用中文逗号。

场景五:删除项与 VHDX 回滚 ​

is_delete 是高风险语义。它不是暂时隐藏、禁用下载或取消订单,而是把订单解释为需要清理的对象。使用前必须:

  • 保存现有配置和缓存;
  • 确认订单名称、路径和影响范围;
  • 确认机台空闲且没有写入;
  • 确认目标内容有可恢复来源;
  • 删除后有健康和磁盘验收窗口。

不要用删除项解决 Hash 错误、发布时间未到、挂载失败或侧载选择错误。那些问题都应停留在对应诊断层。

场景六:时间导致“下载完成但不应用” ​

订单可能同时有顶层时间和安装项级时间。推荐使用同一策略:

  • 全部由顶层 current 控制,安装项时间留空;或
  • 所有安装项统一使用同一时区和同一套时间。

不要让主安装项已经释放,而差分安装项仍处于未来;也不要把浏览器本地时间、机台本地时间和公告时间混在一起。出现等待状态时,先看当前订单/安装项的时间和状态,不要重复保存。

场景七:Hash、大小和 URL 的三角核对 ​

下载前把发布说明中的三项放在同一张脱敏维护记录里:

text
安装项名称:<ITEM_A>
来源地址:<REDACTED_URL>
预期大小:<BYTES>
预期 Hash:<HASH>
镜像文件名:<IMAGE_NAME_OR_EMPTY>

三项的关系:

  • URL 决定从哪里取文件;
  • size 描述预期文件大小,单位是字节;
  • hash 用于确认文件内容未被替换。

大小正确不代表内容正确,Hash 正确也不能证明路径、密码、挂载和启动入口正确。任何一项异常都不要通过关闭校验或手工改文件解决。

场景八:保存前的 JSON 区域检查 ​

编辑器底部显示“生成的订单列表配置”和“JSON 有效/JSON 格式错误”。

表单改动 ​

表单每次改动都会重新生成格式化 JSON。这个 JSON 是当前草稿,不一定是服务器刚刚回读的最新内容。复制它可以作为保存前快照,但文件名要明确标注“草稿”。

直接编辑文本 ​

直接编辑 JSON 时:

  1. 顶层必须是数组;
  2. 字符串要使用双引号;
  3. Windows 反斜杠在 JSON 中需要正确转义;
  4. 数字字段不要加引号;
  5. 布尔字段使用 true/false;
  6. 解析失败时,页面保留上一次有效表单作为显示;
  7. JSON 错误时保存按钮禁用;
  8. 修复后重新检查字段类型、名称和数组数量。

安全占位结构可以写成:

json
[
  {
    "name": "ORDER_PLACEHOLDER",
    "description": "<DESCRIPTION>",
    "install_path": "<WINDOWS_PATH>",
    "is_delete": false,
    "is_option": false,
    "is_vhdx": true,
    "vhdx_pwd": "<VHDX_PASSWORD>",
    "current": {
      "order_time": "<ORDER_TIME>",
      "release_time": "<RELEASE_TIME>"
    },
    "settings": {
      "mklink": {
        "enable": false,
        "mode": 0,
        "src_path": "",
        "dst_path": ""
      },
      "sideload": {
        "enable": true,
        "run_path": "<RUN_PATH>"
      }
    },
    "install": [
      {
        "name": "ITEM_PLACEHOLDER",
        "hash": "<HASH>",
        "url": "<URL>",
        "pwd": "",
        "size": 0,
        "vhdx_name": "<IMAGE_NAME>",
        "order_time": "",
        "release_time": ""
      }
    ],
    "install_mklink": {}
  }
]

这个结构只是字段形状。size: 0、空密码、占位地址和占位路径都不能直接保存到生产机台。

场景九:保存、关闭和并发修改 ​

操作草稿机台配置
关闭/取消丢弃本次草稿不改变
示例替换替换本次草稿不改变
添加/删除修改本次草稿不改变
JSON 修复修改本次草稿不改变
保存配置提交完整数组进入操作处理

点击保存后弹窗会关闭,控制页进入轮询。不要在操作进度还没有结果时再次打开并保存第二份。若保存超时,先刷新配置和订单健康,确认是否已经写入,再决定是否联系管理员。

从保存到内容可用的验收链 ​

text
保存配置成功
→ 配置回读一致
→ 订单出现在健康状态
→ 每个安装项开始/完成
→ Hash 与大小检查通过
→ 发布时间满足
→ 镜像准备/挂载完成
→ 侧载选择正确
→ 启动入口成功
→ 内容最小读取
→ 登录/退出与记录检查
→ 重启后再次回读

每一步都要有可见证据。没有看到下一步,不要用上一阶段的成功消息代替。

故障分层表 ​

现象停留层首个动作不要做
订单完全不出现配置/权限/分支刷新配置并确认账号猜入口或复制别的机台配置
订单出现但不下载可选/黑名单/时间检查列表和时间重复创建同名订单
下载开始但速度异常网络/限速/磁盘看四阶段限速、磁盘和速度立刻重启或删除缓存
下载完成但 Hash 错文件完整性对照发布值关闭校验或改文件
镜像解锁失败镜像匹配/密码核对镜像名和当前密码反复尝试账号密码
镜像已下载但内容不可见挂载/路径映射看侧载、挂载、映射和路径随意改键值方向
侧载按钮不存在侧载开关/授权/分支回读订单和分支手工猜版本标识
启动入口失败运行路径/盘符确认运行路径和盘挂载复制另一机台目录
保存成功无变化应用时序刷新健康/订单,按提示重启连续保存同一配置
重启后回到旧内容选择/应用/缓存确认“使用”目标和应用完成只看屏幕版本文字

回滚与停止条件 ​

出现以下任一情况,应停止继续修改:

  • 不知道当前配置是否已经写入;
  • 订单、安装项和映射来自不同发布批次;
  • 没有可用的原始配置或恢复介质;
  • 机台正在被玩家使用或正在写入记录;
  • 画面黑屏、循环重启或磁盘状态异常;
  • 密码、地址或私密值已经出现在公开聊天/截图中;
  • 结果超时且无法判断动作是否已经执行。

停止后保存最小证据:操作名称、目标机台脱敏名、时间、最后上报、订单摘要、页面结果和已尝试步骤。回滚策略见回滚决策与最小恢复路径。

Released under the CC BY-NC-SA 4.0 License.