是否可以在不关闭应用程序的情况下将应用程序更新到新版本?
或者有没有一种好方法可以做到这一点,而用户不会注意到它已关闭?
通常,应用程序在启动时会注意到有可用更新,然后询问用户是否可以更新。然后他们开始更新过程并退出。更新过程会替换文件,然后启动新版本。
在某些情况下,您可能无需重新启动即可更新应用程序的某些部分 - 但增加的复杂性是显着的,坦率地说,最好不要在 99% 的情况下尝试,IMO。
当然,你还没有说你正在编写什么样的应用程序——如果你能提供更多信息,那会有所帮助。
您可以将后端分离到一个单独的进程/模块中,并通过在用户没有意识到的情况下重新启动来更新后端。
更新前端会有点棘手,但如有必要,可以避免或延迟。
实现此目的的一种不错且干净的方法是使用动态插件。您可以编写大量基于插件的应用程序。当需要更新时,卸载需要更新的插件,更新 .dll 文件并将其加载回应用程序。然而,让用户看不到它可能是一项艰巨的工作,因此它在很大程度上取决于您的设计和编码。
我记得 InTime 能够实时交换 exe,但必须仔细编码。我知道这是可能的,但正如 Jon Skeet 所说,你最好不要尝试。
除非您正在做某种自动化或非常严重的事情......即使那样,您也应该考虑故障转移,以便您可以在需要时关闭/重新启动。
如果您有某种启动应用程序和 dll 的骨架框架,您可以查看CreateDomain。不过,这将需要您认真的设计工作。祝你好运!