C# Autoupdater.net 无法提取

标签 c#

我在使用 C# 版 Autoupdater.Net 时遇到问题。 我的程序从 C:\Systeminventory 启动并找到更新。程序正在下载它并关闭应用程序。一切都很好。但是,在安装更新时,更新程序会因解压而挂起。什么也没发生。

如果我将应用程序文件移动到 C:\Systeminventory\folder 并启动它,更新程序会下载更新并将其解压到 C:\Systeminventory。那不是我想要的。我想从 C:\Systeminventory 启动应用程序,并将更新的文件放入 C:\Systeminventory。更新程序似乎无法覆盖旧文件,但为什么呢?

应用程序已关闭且未运行。我在任务管理器中检查了这一点。我在我的私有(private)电脑上测试了它,我是管理员。我做错了什么?

使用

这是 XML 文件

<?xml version="1.0" encoding="UTF-8"?>
<item>
    <version>1.1.0.0</version>
    <url>https://example.com/update/update.zip</url>
    <changelog></changelog>
    <checksum algorithm="MD5">e2b0bf57f72f865209caab60eb6c13b6</checksum>
    <mandatory>false</mandatory>
</item>

这是C#代码

try
{
    AutoUpdater.Start(updatePath);
    AutoUpdater.ShowSkipButton = false;
    AutoUpdater.ShowRemindLaterButton = false;
    AutoUpdater.Mandatory = true;
    //AutoUpdater.UpdateMode = Mode.Forced;
    AutoUpdater.RunUpdateAsAdmin = false;
    var currentDirectory = new DirectoryInfo(Environment.CurrentDirectory);
    if (currentDirectory.Parent != null)
    {
        AutoUpdater.InstallationPath = currentDirectory.Parent.FullName;
    }
}
catch (Exception)
{
    MessageBox.Show("There's a problem in update");
}

最佳答案

我找到了解决方案。

我将存储在调试/发布文件夹中的文件打包到一个 zip 文件中 如果你这样做,你必须删除“Parent”。所以正确的代码是:

AutoUpdater.InstallationPath = currentDirectory.FullName;

现在它会覆盖文件并启动新版本。一切都很好。

关于C# Autoupdater.net 无法提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68514708/

相关文章:

c# - 如何获取实现给定接口(interface)的所有加载类型的所有实例?

c# - 如何向服务器端 Blazor 项目添加 Controller (而非 View )支持

c# - 获取自定义属性的回发值

c# - 在哪里验证 ASP.Net Core 应用程序中的 AutoMapper 配置?

c# - 有没有办法监视控制台应用程序的状态?

c# - 使 COM 互操作事件从界面可见

c# - 有没有办法使用 LINQ 从 List<T> 中删除某些元素?

c# - 数据未更新到表

c# - 来自 c# DateTime 的 Javascript 日期

c# - lambda 事件订阅会造成内存泄漏吗?