Windows下程序可执行文件的替换策略
我有一个Windows程序,需要从服务器自动更新自己 它已经能够从服务器传输文件,并在加载DLL插件文件之前对其进行更新和验证 然而,这个程序也需要自我更新。可能有几种不同的方法可以做到这一点,我从各种在线游戏客户端看到的最明显的方法是创建一个“自动补丁程序”,下载并运行客户端可执行文件。这就带来了必须更新autopatcher的问题,因此如果有更优雅的解决方案,我想听听 我必须想象有一种方法可以将新的可执行文件下载为临时文件,比如“client.exe.tmp”,然后启动一个单独的进程,等待原始client.exe退出,然后在其顶部重命名/复制新文件 以前有人成功地做过这类事情吗?你用什么方法让它工作Windows下程序可执行文件的替换策略,windows,patch,auto-update,Windows,Patch,Auto Update,我有一个Windows程序,需要从服务器自动更新自己 它已经能够从服务器传输文件,并在加载DLL插件文件之前对其进行更新和验证 然而,这个程序也需要自我更新。可能有几种不同的方法可以做到这一点,我从各种在线游戏客户端看到的最明显的方法是创建一个“自动补丁程序”,下载并运行客户端可执行文件。这就带来了必须更新autopatcher的问题,因此如果有更优雅的解决方案,我想听听 我必须想象有一种方法可以将新的可执行文件下载为临时文件,比如“client.exe.tmp”,然后启动一个单独的进程,等待原
我喜欢修补程序/维护/功能添加/删除工具的方法。即使出于某种原因,你需要更新一些琐碎的东西,我在这里看不到“鸡或蛋悖论”,它更像是“一只手洗另一只手”的事情
考虑哪一个将帮助您从共享位置插入/替换/更新最新版本并执行 “运行exe会将自己重命名为任何东西(如.exe.tmp)”听起来有些棘手。你能在执行文件时重命名它吗?是的,你不能删除它,但你可以在它运行时重命名它。尽管如此,我想最简单的方法是让exe创建一个自己的副本,然后执行执行所有替换操作的副本。你如何摆脱正在运行的副本?从正在运行的exe启动更新的exe并让新启动的exe执行终止/删除操作会更安全一些,因为这意味着新的exe至少可以启动。在实践中,我发现这只在50%的时间内有效。通常,由于某些原因,.exe.old仍然存在,并且不会删除,因为它正在使用中(即使在正在执行的.exe关闭之后),因此当前版本无法重命名为.exe.old,并且应用程序永远不会更新。