程序自我更新的最佳方式

问题描述 投票:0回答:7

终止程序然后从正在终止的程序中运行其他代码的最佳方法是什么?例如,程序自我更新的最佳方式是什么?

updating patch
7个回答
10
投票

你有几个选择:

您可以使用另一个应用程序 .exe 来进行自动更新。这可能是最好的方法。

您还可以在程序运行时重命名程序的 exe。因此允许您从某个更新服务器获取文件并替换它。在程序的下一次启动时,它将使用新的 .exe。然后您可以在启动时删除重命名的文件。


1
投票

知道我们在这里谈论的是什么语言会真的很有帮助。我确信我可以为您提供一些在 PowerBuilder 或 Cobol 中执行此操作的非常棒的技巧,但这可能并不是您真正想要的!但是,如果您使用的是 Java,那么您可以使用关闭挂钩 - 对我来说非常有用。


1
投票

另一件要考虑的事情是,我一直在使用的大多数“主要”应用程序(FileZilla、Paint.NET 等)都让更新程序卸载应用程序的以前版本,然后重新安装新版本应用程序的版本。

我知道这不适用于真正的大型应用程序,但这似乎是中小型应用程序的“首选”过程。


0
投票

如果没有主程序在关闭之前启动的第二个程序,我不知道有什么方法可以做到这一点。程序 2 下载并安装更改,然后重新启动主程序。


0
投票

我们在以前的应用程序中做了类似的事情。我们通过 X 或关闭按钮捕获了程序(在 .NET 2.0 中)的终止,然后启动了用户看不到的后台更新进程。它会检查服务器(客户端-服务器应用程序)是否有更新,如果有可用更新,它会使用 BITS 在后台下载。然后下次应用程序打开时,它会意识到有一个新版本(我们设置了一个标志)并弹出一条消息提醒用户新版本,如果他们想查看添加的新功能,请点击一个按钮到这个版本。


0
投票

如果你有一个辅助应用程序运行来进行更新,它会更容易。您将执行“更新程序”应用程序,然后在其中等待其他进程退出。如果您需要访问常规应用程序 DLL 等,但它们也需要更新,您可以从具有已更新 DLL 的辅助位置运行更新程序,这样它们就不会在原始位置使用。


0
投票

如果您正在使用编写 .NET 应用程序,您可以考虑使用 ClickOnce。如果您需要相当多的定制,您可能会去别处看看。

我们有一个外部进程为我们执行更新。当它找到更新时,它会将其下载到辅助文件夹,然后等待主应用程序退出。退出时,它会替换所有当前文件。主进程每 4 小时启动一次更新进程。因为更新过程会等待主应用程序退出,所以主应用程序除了启动更新应用程序外不需要做任何特殊处理。

这是一个附带问题,但如果您正在考虑编写自己的更新过程,我鼓励您考虑使用某种压缩来 (1) 保存下载和 (2) 提供一个文件以从更新中提取服务器。

希望这是有道理的!

© www.soinside.com 2019 - 2024. All rights reserved.