通过写入当前正在执行的文件来更新程序

时间:2010-07-29 14:34:17

标签: c++

我正在编写一个迟早需要更新的c ++程序。我希望这需要尽可能少的与用户的交互,因为程序在后台持续运行并且永远不会终止。我知道在正常情况下,你不能写入正在执行的文件,所以这是我的问题:应用程序是否可以自行修改而不需要运行另一个可执行文件并让它接管?我不能有多个文件。

3 个答案:

答案 0 :(得分:5)

大多数使用自动更新功能的程序使用另一个可执行文件来接管执行,以避免出现此问题。

但是我看到了一个简单的解决方案:

  • old programnew program下载到临时位置
  • old program启动new program(可能带有特殊参数)并自行终止
  • new program将自己复制到old program上(对于正在运行的程序来说,只要它不会自行打开就可以自行阅读)
  • new program使用特殊参数运行new program (copy),然后自行终止
  • new program (copy)删除new program并恢复正常操作

足够清楚了吗? :)

答案 1 :(得分:0)

您应该能够向程序发送命令以告知程序终止,然后更新可执行文件,然后重新启动。它还应该保存任何状态,以便它可以在重新启动时从中断处继续,如果这很重要的话。

答案 2 :(得分:0)

有一些语言,如脚本语言或.NET / Java,可以让您修改自己的代码。但是,C ++不提供任何运行时代码生成或修改工具。如果你不想改变语言,你就会被塞满。我猜你可能会得到像LLVM这样的非标准工具。