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