【问题标题】:autoupdate strategy for application应用程序的自动更新策略
【发布时间】:2015-05-28 05:14:41
【问题描述】:

我在C++ 上编写了应用程序,我希望能够像Google Chrome 那样更新它:

  • 从服务器静默下载新版本,
  • 替换原始文件和
  • 重启应用。

我也想替换 exe 文件,该文件在使用中被锁定。 找不到此类autoupdate 的任何解决方案。

也许wxWidgets有这样的工具?

或者你知道怎么做?

【问题讨论】:

  • 有没有办法在没有任何其他launcher.exe 或updater.exe 的情况下使用单个入口点(应用程序)来做到这一点?
  • 也许,有办法从自身解开 exe 文件并替换它?无论如何,操作系统会将所需的所有内容加载到 RAM 中。所以它不再需要磁盘上的实际文件了。
  • 不,操作系统不一定会一次将整个文件加载到 RAM 中。例如,请参阅this answer

标签: c++ windows wxwidgets


【解决方案1】:

制作 2 个程序。您的主要应用程序和启动器。启动器是人们应该点击启动程序的地方,它负责启动主应用程序,然后可以自行关闭。如果您需要在主应用程序运行时进行更新,您可以将更新后的程序连同任何其他必要的文件一起下载到单独的文件中。然后主应用程序可以启动启动器并自行关闭。然后,启动器负责删除旧程序并重命名新程序,然后重新启动它。

实际上,这甚至不必是两个不同的程序。它可以是在两种不同模式下运行的同一程序(例如,通过命令行参数选择)。不过,您仍然需要磁盘上的可执行文件的 2 个副本。请注意,这正是 Google Chrome 所做的。

【讨论】:

  • 必须明确的策略,但是更新启动器本身呢?
  • @Neka:主应用程序可以做到这一点。
【解决方案2】:

该理论在上面的评论中有所描述。在实践中,你应该看看WinSparkle

【讨论】:

    【解决方案3】:

    将您的程序打包为 MSI 文件(Windows 安装程序)。然后下载新的 msi 文件并启动它。 Windows 安装程序负责更新您的程序,您可以编写安装程序以重新启动您的应用程序。

    查看http://wixtoolset.org/,了解如何构建您的安装程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2010-09-08
      相关资源
      最近更新 更多