VHDX 订单场景化操作手册
本页把 VHDX 订单从“看懂字段”进一步写成可以逐步执行的维护手册。它回答三个问题:什么时候应该使用 VHDX 订单、如何在网页编辑器中建立一份可回读的配置、出现下载/校验/挂载/启动问题时应该停在哪一层。
本页只使用占位符,不包含真实密码、下载地址、校验值、机台路径或任何凭据。实际值必须来自当前发布说明和有权限的维护人员;聊天截图、旧配置和别人的机台目录不能自动作为配置来源。
聊天经验补充:为什么要区分镜像、热重载和恢复盘
现场讨论里常把“做一个镜像”“用订单挂载镜像”“整盘恢复”和“热重载切换”混成同一件事。它们的可见结果不同:订单镜像用于内容/分支交付,整盘恢复用于把机台恢复到可启动状态,热重载只是一次切换动作。一个动作卡住时,不要用另一个动作覆盖它。
历史经验还提示:差分镜像架构下,部分设置可能在切换后没有持久化;更新公告可能要求关闭热重载,或要求下载完成后再用冷重启/热重载应用。以当前公告为准,保存配置后要回读设置,不要只凭启动画面判断成功。
先理解“订单”和“安装项”的关系
自定义订单编辑器的顶层是一个数组。数组中的每个对象是一个“订单”,订单里的 install 又是一个安装项数组。页面上的“订单 1”“订单 2”对应顶层数组序号;“安装项 1”“安装项 2”对应某个订单内的安装项序号。
可以把它理解成:
订单列表
├─ 订单 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 订单,并不会自动生成镜像,也不会修复缺失内容。
开始前的只读准备
在打开编辑器前保存以下信息:
- 当前订单配置的完整离线副本;
- 当前健康数据和最后上报时间;
- 当前侧载分支、订单列表、可选列表和黑名单摘要;
- 目标机台磁盘空间和回滚介质状态;
- 管理员提供的目标订单清单、安装项清单、镜像名、Hash、大小、时间和密码来源;
- 本次维护窗口和现场负责人。
不要把这些资料全部粘贴到公开聊天。反馈时只需要脱敏名称、时间、状态和错误文字;密码、访问码和完整路径放在受保护的位置。
打开编辑器时的可见行为
点击“自定义订单配置”卡片的“编辑配置”后,弹窗会把当前 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 | 进度列表中的可识别名称 |
| Hash | install[].hash | 发布说明中的完整校验值 |
| URL | install[].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.mklink
订单级映射卡片有开关、模式、源路径和目标路径。关闭时字段可以保留,但不应按启用映射理解。模式是数字输入,网页没有完整的枚举说明;没有经过验证的模式值时保持管理员给出的值,不要猜一个非零数字。
settings.sideload
侧载卡片有开关和运行路径。开关决定该订单是否可能出现在侧载选择列表,运行路径决定启动入口。路径所在盘必须在启动阶段可用;“下载完成”不能证明运行路径存在。
第六步:填写 install_mklink
“添加映射”会增加键/值一行。修改键时页面会删除旧键并建立新键;修改值只改变当前值;删除映射只改变订单 JSON,不删除磁盘上的原目录。
使用前确认:
- 键和值的方向来自管理员验证过的样例;
- 源目录存在且可读;
- 目标目录属于当前订单;
- 不会覆盖其它订单的目标;
- 多个映射之间没有重叠;
- 回滚时知道要恢复哪一组映射。
不要用“键/值看起来合理”替代测试机验证。映射错误常表现为下载成功、启动成功但内容缺失或写入错误位置。
场景二:使用 VHDX 示例理解结构
点击“填入 VHDX 示例配置”前,如果当前已有订单,页面会要求确认是否替换全部内容。确认后只替换当前草稿,不会立即改变机台。
安全用法:
- 打开编辑器并保存原始 JSON;
- 点击示例按钮,观察字段层级;
- 不复制示例中的真实字符串;
- 用当前发布说明逐项替换名称、路径、密码、Hash、URL、大小和时间;
- 删除不需要的安装项和映射;
- 检查 JSON 有效;
- 必要时关闭弹窗重新打开确认草稿仍是预期内容;
- 只有在维护窗口内点击“保存配置”。
点击示例按钮不是“恢复默认”,也不是“检查机台”。如果误点,点击取消或关闭弹窗即可放弃草稿。
场景三:多安装项 VHDX 订单
一个订单可以有多个安装项。适用于内容被拆成主文件、资源文件、差分文件或多个镜像的情况。建立多安装项时:
- 每一项使用不同且可读的
name; - 每一项的
hash与size配对; - 只有真正是镜像的安装项填写对应
vhdx_name; - 订单级时间和安装项级时间不要互相矛盾;
- 不要把主包完成当成全部安装项完成;
- 删除某一行前先确认它不是其它映射的来源。
页面中的“安装项 N”只是数组序号。删除中间一项后,后面的序号会前移;反馈时最好同时写名称而不只写序号。
场景四:可选 VHDX 订单
如果订单开了“可选安装项”,它还需要出现在机台控制区的“订单项可选安装列表”中。排查顺序:
- 订单名称是否拼写完全一致;
is_option是否真的开启;- 可选列表是否使用英文逗号分隔;
- 名称是否误写进黑名单;
- 是否有删除列表影响同一名称;
- 保存列表后是否刷新配置;
- 订单是否已经到达
release_time; - 目标分支是否允许该订单。
可选列表里的名称是匹配值,不是描述文字。不要写数组、不要把说明括号一并复制,也不要使用中文逗号。
场景五:删除项与 VHDX 回滚
is_delete 是高风险语义。它不是暂时隐藏、禁用下载或取消订单,而是把订单解释为需要清理的对象。使用前必须:
- 保存现有配置和缓存;
- 确认订单名称、路径和影响范围;
- 确认机台空闲且没有写入;
- 确认目标内容有可恢复来源;
- 删除后有健康和磁盘验收窗口。
不要用删除项解决 Hash 错误、发布时间未到、挂载失败或侧载选择错误。那些问题都应停留在对应诊断层。
场景六:时间导致“下载完成但不应用”
订单可能同时有顶层时间和安装项级时间。推荐使用同一策略:
- 全部由顶层
current控制,安装项时间留空;或 - 所有安装项统一使用同一时区和同一套时间。
不要让主安装项已经释放,而差分安装项仍处于未来;也不要把浏览器本地时间、机台本地时间和公告时间混在一起。出现等待状态时,先看当前订单/安装项的时间和状态,不要重复保存。
场景七:Hash、大小和 URL 的三角核对
下载前把发布说明中的三项放在同一张脱敏维护记录里:
安装项名称:<ITEM_A>
来源地址:<REDACTED_URL>
预期大小:<BYTES>
预期 Hash:<HASH>
镜像文件名:<IMAGE_NAME_OR_EMPTY>三项的关系:
- URL 决定从哪里取文件;
- size 描述预期文件大小,单位是字节;
- hash 用于确认文件内容未被替换。
大小正确不代表内容正确,Hash 正确也不能证明路径、密码、挂载和启动入口正确。任何一项异常都不要通过关闭校验或手工改文件解决。
场景八:保存前的 JSON 区域检查
编辑器底部显示“生成的订单列表配置”和“JSON 有效/JSON 格式错误”。
表单改动
表单每次改动都会重新生成格式化 JSON。这个 JSON 是当前草稿,不一定是服务器刚刚回读的最新内容。复制它可以作为保存前快照,但文件名要明确标注“草稿”。
直接编辑文本
直接编辑 JSON 时:
- 顶层必须是数组;
- 字符串要使用双引号;
- Windows 反斜杠在 JSON 中需要正确转义;
- 数字字段不要加引号;
- 布尔字段使用
true/false; - 解析失败时,页面保留上一次有效表单作为显示;
- 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 修复 | 修改本次草稿 | 不改变 |
| 保存配置 | 提交完整数组 | 进入操作处理 |
点击保存后弹窗会关闭,控制页进入轮询。不要在操作进度还没有结果时再次打开并保存第二份。若保存超时,先刷新配置和订单健康,确认是否已经写入,再决定是否联系管理员。
从保存到内容可用的验收链
保存配置成功
→ 配置回读一致
→ 订单出现在健康状态
→ 每个安装项开始/完成
→ Hash 与大小检查通过
→ 发布时间满足
→ 镜像准备/挂载完成
→ 侧载选择正确
→ 启动入口成功
→ 内容最小读取
→ 登录/退出与记录检查
→ 重启后再次回读每一步都要有可见证据。没有看到下一步,不要用上一阶段的成功消息代替。
故障分层表
| 现象 | 停留层 | 首个动作 | 不要做 |
|---|---|---|---|
| 订单完全不出现 | 配置/权限/分支 | 刷新配置并确认账号 | 猜入口或复制别的机台配置 |
| 订单出现但不下载 | 可选/黑名单/时间 | 检查列表和时间 | 重复创建同名订单 |
| 下载开始但速度异常 | 网络/限速/磁盘 | 看四阶段限速、磁盘和速度 | 立刻重启或删除缓存 |
| 下载完成但 Hash 错 | 文件完整性 | 对照发布值 | 关闭校验或改文件 |
| 镜像解锁失败 | 镜像匹配/密码 | 核对镜像名和当前密码 | 反复尝试账号密码 |
| 镜像已下载但内容不可见 | 挂载/路径映射 | 看侧载、挂载、映射和路径 | 随意改键值方向 |
| 侧载按钮不存在 | 侧载开关/授权/分支 | 回读订单和分支 | 手工猜版本标识 |
| 启动入口失败 | 运行路径/盘符 | 确认运行路径和盘挂载 | 复制另一机台目录 |
| 保存成功无变化 | 应用时序 | 刷新健康/订单,按提示重启 | 连续保存同一配置 |
| 重启后回到旧内容 | 选择/应用/缓存 | 确认“使用”目标和应用完成 | 只看屏幕版本文字 |
回滚与停止条件
出现以下任一情况,应停止继续修改:
- 不知道当前配置是否已经写入;
- 订单、安装项和映射来自不同发布批次;
- 没有可用的原始配置或恢复介质;
- 机台正在被玩家使用或正在写入记录;
- 画面黑屏、循环重启或磁盘状态异常;
- 密码、地址或私密值已经出现在公开聊天/截图中;
- 结果超时且无法判断动作是否已经执行。
停止后保存最小证据:操作名称、目标机台脱敏名、时间、最后上报、订单摘要、页面结果和已尝试步骤。回滚策略见回滚决策与最小恢复路径。
