现象:更新反复弹出,就是装不上
WorkBuddy从 5.8.3 升级到 5.9.3 时出了怪事:每次一启动,“正在安装更新”的窗口就会出现,进度条走完、应用自动重启,可版本一点没变;过一会儿又重来,像陷进了死循环。最后是手动以管理员身份运行安装包才装成功。

图 1 WorkBuddy 5.9.3 主界面:用户在问“安装为什么卡住、本次又是豆包协助装成功的”
现场:安装窗口其实在“空转”

图 2 反复出现的“正在安装更新”窗口,提示应用将自动重启
排查中最关键的观察是:安装窗口虽然在跑,但安装目录里的文件没有任何变化,主程序 WorkBuddy.exe 的版本始终是 5.8.3。换句话说,安装器“看起来装完了”,实际上什么都没替换。
根因:没有管理员权限,却要写受保护目录
这是整件事的核心,分四层来看。
第一层,Program Files 是受保护目录。C:\Program Files 是 Windows 的系统级目录,受 UAC(用户账户控制)和 NTFS 权限双重保护。用 icacls 查看实际权限:普通用户组(Users)只有“读取和执行”权限,没有写入、修改、删除的资格;能写入的只有系统账户,以及通过 UAC 提权后的管理员。读取和运行不受影响,被限制的只是“写”。
第二层,自动更新的安装器没有提权。检查自动更新调起的安装进程,它的权限令牌是中等完整性级别(S-1-16-8192),也就是一个没有管理员权限的普通进程。它没有触发 UAC 提权,就直接开始静默安装。
第三层,写入被拒,主程序无法替换。在安装目录里实测创建文件,系统直接返回“访问被拒绝”。于是安装器想替换 Program Files 里的 WorkBuddy.exe 时同样被挡下,版本只能停在 5.8.3。
第四层,安装器没正确报错,于是无限循环。真正让它“卡死”的是安装器的设计缺陷:写入失败后它没有中断、没有报错,日志里反而照常写了“安装完成”,随后自动重启应用。应用重启后又检测到那个还没装上的更新,于是再次退出、再次安装,每约 1.5 分钟一轮。

解决:提权后一次装成功
既然根子在权限,解法就很直接:右键安装包,选择“以管理员身份运行”,在 UAC 弹窗点“是”。提权后的安装器获得了写入资格,文件顺利替换。

图 3 提权后安装器正常运行,进度条推进 WorkBuddy 5.9.3

图 4 安装程序结束:“WorkBuddy 已经成功安装到本机”
装完后验证:WorkBuddy.exe 版本变为 5.9.3,应用自动检查更新时服务器返回 HTTP 204(无更新可用),确认已是最新,循环也彻底消失。
结论:事实与推测分开说
已验证的事实
安装器未提权、Program Files 写入被拒、主程序版本不变、安装器误报完成并循环——均有日志和本机实测支撑。
无法确认的推测
安装器为什么没有自动触发 UAC 提权,属于软件内部逻辑,现有日志没有记录,只能算推测,不能当事实讲。
遇到同类“装不上、反复更新”,建议这样处理:
先确认安装目录是否位于 C:\Program Files;
若是,右键安装包“以管理员身份运行”,手动完成安装;
这不是用户操作失误,而是软件自动更新在“提权”环节没处理好。
发表评论
登录后即可发表评论