C# 在不关闭应用程序的情况下更新应用程序

C# 在不关闭应用程序的情况下更新应用程序,c#,auto-update,C#,Auto Update,是否可以在不关闭应用程序的情况下将其更新为新版本 或者有没有一种好方法可以在用户未注意到它已关闭的情况下执行此操作?通常,应用程序在启动时会注意到更新可用,然后询问用户是否可以更新。然后启动更新过程并退出。更新过程将替换这些文件,然后启动新版本 在某些情况下,您可能不需要重新启动就可以更新应用程序的某些部分,但增加的复杂性是非常重要的,坦白说,在99%的情况下最好不要尝试 当然,您还没有说您正在编写什么类型的应用程序-如果您能提供更多信息,这会有所帮助。在更新应用程序之前需要关闭应用程序,因为更

是否可以在不关闭应用程序的情况下将其更新为新版本


或者有没有一种好方法可以在用户未注意到它已关闭的情况下执行此操作?

通常,应用程序在启动时会注意到更新可用,然后询问用户是否可以更新。然后启动更新过程并退出。更新过程将替换这些文件,然后启动新版本

在某些情况下,您可能不需要重新启动就可以更新应用程序的某些部分,但增加的复杂性是非常重要的,坦白说,在99%的情况下最好不要尝试


当然,您还没有说您正在编写什么类型的应用程序-如果您能提供更多信息,这会有所帮助。

在更新应用程序之前需要关闭应用程序,因为更新应用程序通常意味着将可执行文件(.exe、.dll等)替换为更新版本,如果不关闭应用程序,则无法完成此操作

在某些情况下,您可以在不关闭应用程序的情况下升级应用程序。但是,这是不可取的,因为它可能会导致更新程序失败,并且整个更新可能会回滚


Updater可以是另一个可执行文件,它将首先关闭主应用程序,然后下载更新,应用更新,启动主应用程序,然后退出(例如,等等)。

您可以将后端分离为单独的进程/模块,并在用户未意识到的情况下通过重新启动来更新后端


更新前端会有点棘手,但如果必要,可以避免或延迟。

实现这一点的一个好方法是使用动态插件。 你可以在很大程度上基于插件编写你的应用程序。当需要更新时,卸载需要更新的插件,更新.dll文件并将其加载回应用程序。
然而,让用户看不到这一点可能是一项艰巨的工作,因此这在很大程度上取决于您的设计和编码。

我记得InTime有能力交换exe的live,但必须仔细编码。我知道这是可能的,但正如乔恩·斯基特所说,你最好不要尝试


除非你在做某种自动化或非常严肃的事情。。。即使这样,你也应该考虑故障转移,这样你就可以在需要时关闭/重新启动。

< P>如果你有某种骨架框架启动了你的应用程序和DLL,你可以看看。这将需要你认真的设计努力。祝你好运