十月补记:本文于 2026 年 10 月 25 日整理并首次发布,页面日期用于归档对应时期的实践;后续修整一并写入。产品开放范围以文中链接的公开说明为准。
软件升级进度转了很久,最后提示超时。这个时候,再按一次“升级”很自然,但也是我现在会先停一下的地方。
超时只能说明这一端没有及时收到结果。另一端可能还没开始,也可能正在安装,甚至已经完成了,只是回复没有送回来。把这些情况都当成“失败了,再来一次”,容易制造第二个问题。
这篇来自轻联相关设备交付工作的整理。公开版本目前主要提供设备清单、连接和单独授权的指定日志读取;下面用软件更新的自编示意解释恢复思路,不把开发中的能力写成已经开放的远程操作服务。
操作失败,和结果没查到,要分别看#
想象两个过程:一台电脑接收更新并安装,另一端显示它的进度。安装在前者继续发生,显示进度则依赖一次次状态读取。
如果状态读取断了,界面会失去消息,但安装不一定停止。反过来,进度条仍在转,也不能证明安装还在正常进行。
我会先保留同一次任务的标识和最后已知阶段。回来以后查询原任务,看看它是未开始、进行中、完成、明确失败,还是暂时无法确认。这里的“无法确认”需要作为一种真实状态保留下来。
我希望恢复的是查询,而不是再发一次安装#
一个比较稳妥的顺序是:找回原任务,恢复只读查询,核对目标版本与结果,再决定下一步。
如果能确认仍在进行,就继续观察;如果已经完成,就检查实际版本;如果有明确失败原因,再按已有恢复方式处理。旧任务还不清楚时,不用一条新任务把它覆盖掉。
恢复查询也不应延长原来的授权、扩大目标设备范围,或者重新打开本来已经失效的操作窗口。用户同意过什么,仍然只在原来的边界里成立。
成功提示,要有可核对的落点#
“安装命令返回成功”“文件已经替换”“应用启动后显示目标版本”,是不同层次的结果。对外说升级成功,至少应该能解释依据来自哪一层。
比如这个自编反馈就比一句“完成”清楚:原任务查询已恢复,目标版本已确认;应用首次启动仍待检查。它没有把最后一项省略,也没有让用户误以为所有使用路径都已经验证。
涉及后台进程、重启和用户登录状态时,还要特别看重启之后是否真的能继续工作。不能因为安装器退出了,就自动认定用户已经拿到完整体验。
我会怎样测试这种不确定状态#
可以故意丢掉一次状态响应,让任务在另一端继续;然后重新打开查看,确认找回的是原任务。还要检查查询到期、权限撤销、进程重启,以及完成结果暂时读不到的情况。
测试重点是有没有错误地重复执行、有没有把未知写成失败或成功。合成环境能验证这套判断,真实设备的升级仍需要独立回执。
这套思路也适用于导出、上传和其他有副作用的长任务。没收到消息时,先问“刚才那件事做到哪了”,往往比立刻再做一次更有方向。