8

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

4

7 回答 7

10

你有几个选择:

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

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

于 2008-09-05T15:20:23.537 回答
1

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

于 2008-09-05T15:39:05.753 回答
1

Another thing to consider is that most of the "major" apps I've been using (FileZilla, Paint.NET, etc.), are having the updaters uninstall the previous version of the app and then doing a fresh install of the new version of the application.

I understand this won't work for really large applications, but this does seem to be a "preferred" process for the small to medium size applications.

于 2008-09-05T15:46:16.297 回答
0

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

于 2008-09-05T15:18:07.737 回答
0

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

于 2008-09-05T15:20:22.803 回答
0

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

于 2008-09-05T15:21:10.197 回答
0

如果您正在使用编写 .NET 应用程序,则可以考虑使用 ClickOnce。如果您需要相当多的定制,您可能会寻找其他地方。

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

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

希望这是有道理的!

于 2008-09-05T15:42:18.787 回答