我现在一直在寻找一个好的解决方案3天,但到目前为止我还没有找到任何解决方案。我的情况是:
客户端已安装应用程序(C ++,控制台应用程序)。启动时的应用程序将检查它与服务器的版本号并返回,或者它是最新的还是应该下载新版本。
如果必须下载新版本,我想用Curl下载新脚本,名称为: Application2.exe
但是,我希望它替换触发下载新版本的旧 Application.exe 。
我的解决方案是: Application.exe 下载 Application2.exe 。下载后,它应该触发 Updater.exe ,让我们睡5秒钟。在这5秒内(或任何最佳套房的时间跨度)。在这5秒内, Application.exe 有时间关闭,5秒后 Updater.exe 将 Application.exe 替换为 Application2 .EXE
现在更新已完成,客户端已安装最新版本。
关于系统锁定文件等,这个解决方案是否可行?
答案 0 :(得分:6)
好消息是,您可以重命名在Windows上打开的文件(可执行文件和DLL)。锁可以防止您删除文件,而不是重命名文件。
Application_old.exe
Application.exe
Application.exe
这样,您将在更新后自动重启。我一直这样做。