我们正在尝试一次将更新推送到多台服务器,我的经理发现可以重命名正在运行的 .exe 文件。使用该知识,他想重命名正在运行的 exe 并复制所述 exe 的新版本,这样任何运行 foo.exe 内存副本的人都可以,并且任何打开指向 foo.exe 的快捷方式的人都将获得一个新副本应用了更新。
我想我需要澄清一下,他并不指望旧副本会神奇地更新,他只是希望他们继续运行旧副本,直到他们再次打开 exe,在这种情况下,它将打开具有名称的新副本旧的。
它有时会抛出该文件正在他的程序中使用的异常,但如果他尝试在循环中重命名它,它最终会成功。在我的机器上,即使在循环中,我也无法让它工作。
我的第一个也是主要的问题是:这样做是否可以接受。重命名正在运行的可执行文件是否应该是一个有效的场景?
其次,如果这是一个有效的场景,那么如何可靠地做到这一点?我们目前的想法是尝试多次使用 File.Move (C#) 进行重命名,如果它不起作用,则将其写入错误日志以便手动处理。