在Windows中替换程序可执行文件的策略

时间:2011-08-26 00:07:16

标签: windows patch auto-update

我有一个Windows程序需要自动从服务器更新自己。

它已经能够从服务器传输文件并在加载之前更新+验证DLL插件文件等内容。

但是,该程序还需要自行更新。可能有几种不同的方法可以完成,而且我从各种在线游戏客户端看到的最明显的方法是创建一个“自动修补程序”,下载然后运行客户端可执行文件。这引入了必须更新autopatcher的问题,所以如果有一个更优雅的解决方案,我想听听它。

我必须想象有一种方法可以将新的可执行文件作为临时文件下载,让我们说“client.exe.tmp”,然后启动一个单独的进程,等待原始client.exe退出然后在其顶部重命名/复制新文件。

有没有人在成功之前做过这类事情,你用什么方法让它发挥作用?

3 个答案:

答案 0 :(得分:11)

  1. 运行exe下载新的,放在某处
  2. 运行exe将自己重命名为任何内容(如.exe.tmp)
  3. 运行exe将下载的exe放在正在运行的exe(就像原始名称一样)
  4. 运行exe启动下载的exe
  5. 下载exe检查.exe.tmp文件,如果找到则删除它并杀死旧的正在运行的进程
  6. 完成

答案 1 :(得分:1)

我喜欢修补程序/维护/功能添加/删除工具方法。即使由于某种原因你需要更新一些微不足道的东西,我也看不到鸡蛋或鸡蛋悖论"在这里,它更像是一只手,另一只手洗掉了另一只手。的事情。

  1. 应用程序检查服务器是否有更新(如果有),检查修补程序是否是最新的,如果需要,应用程序更新修补程序
  2. Patcher作为单独的进程执行,下载更新,并通知应用程序提示安装它
  3. 您同意,应用程序退出通知修补程序,修补程序解压缩数据,替换exe,执行新版本可能需要的其他内容并启动它并终止

答案 2 :(得分:0)

考虑ClickOnce deployment,它将帮助您从共享位置安装/替换/更新最新版本并执行。