【问题标题】:Self Updating自我更新
【发布时间】:2010-09-07 22:37:54
【问题描述】:

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

【问题讨论】:

    标签: updating patch


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      希望这是有道理的!

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            你有几个选择:

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

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                  猜你喜欢
                  • 2013-02-05
                  • 2016-10-12
                  • 2015-08-19
                  • 2018-05-06
                  • 2012-06-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-02-11
                  • 2016-05-14
                  相关资源
                  最近更新 更多