You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用Autoupdater.NET更新时卡在解压阶段无法覆盖原文件问题

Autoupdater.NET 更新路径错误及卡解压问题解决方案

问题根因

你代码中对AutoUpdater.InstallationPath的赋值逻辑错误,直接导致了两个异常现象:

  • 当程序部署在C:\Systeminventory目录运行时:Environment.CurrentDirectory值为C:\Systeminventory,其父目录为C:\根目录,更新程序尝试向C盘根目录写入解压文件,但你配置了AutoUpdater.RunUpdateAsAdmin = false,更新进程无C盘根目录写入权限,因此卡在解压步骤无响应。
  • 当程序部署在C:\Systeminventory\folder目录运行时:Environment.CurrentDirectory值为C:\Systeminventory\folder,其父目录为C:\Systeminventory,因此更新文件会被解压到该目录,不符合你的预期。

修复方案

调整InstallationPath的赋值逻辑,直接指定为当前程序运行目录即可,同时根据目录权限调整管理员运行配置,修改后的调用代码如下:

try
{
    AutoUpdater.Start(updatePath);
    AutoUpdater.ShowSkipButton = false;
    AutoUpdater.ShowRemindLaterButton = false;
    AutoUpdater.Mandatory = true;
    // 程序部署在C盘目录下建议开启管理员更新权限,避免写入被拦截
    AutoUpdater.RunUpdateAsAdmin = true;
    // 直接将安装路径设为当前程序运行目录,无需取父目录
    AutoUpdater.InstallationPath = Environment.CurrentDirectory;
}
catch (Exception)
{
    MessageBox.Show("更新过程出现问题");
}

额外排查点

如果修改后仍出现卡解压的情况,可按以下顺序验证:

  • 检查更新包zip结构:确认zip包根目录就是程序文件,没有嵌套额外的外层文件夹,避免解压后路径层级错误
  • 校验更新包完整性:对比配置文件中的MD5值和实际下载的压缩包MD5是否一致
  • 排查进程残留:确认主程序的所有子进程也已完全退出,避免文件被占用导致无法覆盖

内容的提问来源于stack exchange,提问作者TheQuestionmark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 10:00:03