【问题标题】:WPF .Net Core - Update application in the backgroundWPF .Net Core - 在后台更新应用程序
【发布时间】:2020-12-01 22:39:12
【问题描述】:

我正在开发一个 WPF .Net Core 应用程序,现在我正在寻找一些解决方案,以便在应用程序发布后对其进行更新。我的要求是:

  • 未发布到商店;
  • 不想要自动更新功能;
  • 设备应该可以在没有互联网的情况下工作和更新;
  • 更新应从选择更新文件开始;
  • 更新应在后台进行,无需任何 UI;
  • 应用程序必须始终打开,可以添加重新启动,以便应用更改(如果需要);

我研究过 ClickOne、MSIX、Squirrel 等,但没有成功。

有哪位有经验的可以指点一下吗?

【问题讨论】:

  • 我不想要自动更新功能。我的更新文件必须从正在运行的应用程序中选择,并且更新必须在后台运行。更新必须在设备离线时工作。
  • 抱歉,我误读或问题已更新
  • 当你说工作和更新没有互联网时,你的意思是你想通过U盘更新吗?我一直在使用 WiX,它有点麻烦,但一旦你使用它,它就有很多功能。

标签: wpf visual-studio .net-core auto-update


【解决方案1】:

您无需注册任何 exe 或 dll 即可从文件夹运行应用程序。

文件副本可以工作。

如果 wan 可用,您可以使用 AD 服务器软件(例如 SMS)推送安装新版本。也许这是仓库或核设施中的一台电脑,完全没有空气间隙。

我建议解决此问题的方法是将应用程序文件复制到用户的应用程序数据。 exe、dll配置文件全部复制。进入 v1 文件夹。

当用户获得新的 USB 版本时,您将其复制到 v2 文件夹。

然后重新启动应用程序是从最高版本文件夹运行 exe 的问题。这意味着一个小型加载器应用程序或使用当前位置更新注册表,因此当他们启动 xxx 时,它将从那里计算出位置。如果他们无法更新注册表,这可能不切实际。

您可以使用 mef 更复杂的方法。

使入口点主窗口非常简单,并托管动态发现的 dll 内容。它们可以从最高版本的文件夹中找到。 可以从那里加载资源字典,并以未编译的形式作为原始 xaml 文件或在用户控件库中提供。

因此,您的主要功能将转移到用户控件库中。 实际的 exe 中包含的内容很少。

您可能想在此处考虑完全使用 PRISM,它允许您动态加载 shell 和所有内容。如果您之前没有这样做过,那么可能值得一提的是,需要相当多的 PRISM 知识才能使其发挥作用。

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 2017-11-22
    • 2023-03-20
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2019-12-29
    • 2020-04-09
    相关资源
    最近更新 更多