Skip to content

[改进] 更新失败时错误文案误导 + 更新器缺少日志 #778

Open

Description

@yixiangw314-web

现象:非提升权限下更新安装器失败,NSIS 弹出
"Error writing temporary file. Make sure your temp folder is valid",
但临时目录实际可写(已实测),且失败时零写入。

对比:同一参数、同一临时目录,改为管理员权限运行 → 成功。

建议:

  1. 当前文案会把用户引向 temp 目录,建议至少附上安装器退出码;
  2. electron-updater 的日志(含 spawn 的安装器命令行与退出码)建议写入harness.log,目前只有控制台;
  3. 若某些安装场景实际需要提升权限,建议在 app-update.yml 中正确设置 isAdminRightsRequired,让更新器走 elevate 路径。

update-log.txt

Activity

  1. yaojin3616 commented on Oct 28, 2026

    @yaojin3616
    Contributor

    v0.13.0 发布后状态复核:

    此问题不能按 v0.13.0 已修复关闭。错误提示改进 PR #811 尚未合并,且 NSIS 最初解压到 Temp 的失败早于自定义安装脚本,不能靠后续重试弹窗覆盖。另有实测表明低完整性安装进程也可能触发类似临时文件错误,但尚不能证明本 issue 同因。请补充普通启动的安装进程完整性级别、退出码及下载安装位置的完整性标记;不要直接修改系统权限作为默认处理。保留打开。

    版本入口:https://github.com/dataelement/dsh-desktop/releases/tag/v0.13.0

    反馈请隐去 token、账号凭据、完整会话和其它敏感信息。

  2. added
    keep-open排除无反馈自动关闭,适用于已确认未修复或等待交付的问题
    on Oct 28, 2026
  3. yixiangw314-web commented on Oct 30, 2026

    @yixiangw314-web
    Author

    感谢复核。补充你要的三项数据(2026-10-23 实测;Windows 11 25H2 build 26200 x64;DSH Desktop 0.12.0 → 0.12.1)。

    1. 普通启动的安装进程完整性级别| 项 | 值 |
      | :--- | :--- |
      | 启动安装器的终端令牌 | Mandatory Label\Medium Mandatory Level(S-1-16-8192),Administrators 为 deny-only(过滤令牌) |
      | 安装器清单 | requestedExecutionLevel level="asInvoker" |
      | 安装进程实际级别 | Medium(asInvoker 继承父进程) |

    即:我们复现的失败发生在 Medium 完整性下,不是低完整性。
    如果你们观测到的「低完整性安装进程触发同类错误」是另一条路径,本 issue 应与它分开跟踪,避免同因误判。

    补充:我现在的复测环境是应用的受限沙箱,只能测到 Low(S-1-16-4096),那是工具环境,不代表用户普通双击启动。

    1. 退出码
    尝试方式 参数 退出码 结果
    应用内更新 --updated /S --force-run --package-file=…(electron-updater 自动拼装) — 弹临时文件错误,版本不变
    手动复刻(非提升,静默) 同上 2 版本不变
    手动复刻(非提升,带界面) 去掉 /S 2 同一弹窗
    手动复刻(非提升,普通向导) 无任何参数 2 版本不变
    手动复刻(管理员,静默) 同第 2 行 0 升级到 0.12.1

    非提升 5 次全部退出码 2,提升 1 次退出码 0。

    两条补充:

    • 失败时使用的临时目录 零写入(安装前刚创建的空目录,失败后仍为空),与你说「NSIS 最初解压到 Temp 的失败早于自定义安装脚本」一致。
    • 失败与 --updated 无关:完全不带参数走普通向导同样退出码 2。
    1. 下载安装位置的完整性标记
    • 安装器 无 Zone.Identifier / 无 MOTW:文件只有一个 :$DATA 流,没有 ADS。
      原始下载副本已在本地清理中删除;现用同一 URL 重新下载了 sha512 与 latest.yml 完全一致的副本(284,978,856 字节),复核同样无 ADS。
    • 下载位置:%LOCALAPPDATA%\dsh-desktop-updater\pending\
    • 安装位置:%LOCALAPPDATA%\Programs\DSH Desktop,icacls 未显示 Mandatory Label(默认继承)
    • 另有一个本机非默认状态:%TEMP% 带 Mandatory Label\Low Mandatory Level:(OI)(CI)(NW)(低完整性 + No-Write-Up),可能与本机历史上安装过的沙箱类软件有关。若你们的低完整性假设与此相关,这条或许有参考价值;我们未据此下结论。
    1. 关于系统权限
      同意,不把修改系统权限作为默认处理。我们仅在本地用管理员方式完成了一次安装作为绕过,不提交任何权限修改方案。

    2. 关于 v0.13.0

    我们当前仍在 0.12.1,尚未在 v0.13.0 上复测。如果对定位有帮助,我可以补一组 v0.13.0 的对照数据(非提升 / 提升各一次,记录退出码、临时目录写入情况与完整性级别);请告知是否还需要保留 0.12.x 的对照。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingkeep-open排除无反馈自动关闭,适用于已确认未修复或等待交付的问题

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions