Qt实现在线升级 + Qt编译出来的程序打包成一个exe

最近在做软件的在线升级。

流程大概是这样:
软件检测到服务器有新的更新包–》
软件将新的更新包下载下来(压缩包)–》
利用QProcess启动自己写的升级程序(并且通过argc、argv传递必要的参数),且关闭自己–》
升级程序解压压缩包(用quaZip)、覆盖原来的文件,完成升级–》
升级程序也通过QProcess启动更新后的程序,然后关掉自己;

此时我的更新程序是和主程序放在一起的,两者调用的是一样的Qt的dll。
Qt实现在线升级 + Qt编译出来的程序打包成一个exe_第1张图片

假如单单是更新exe文件的话,这样没问题。

但是假如要连dll都要更新,比如从Qt5.12更新到Qt5.15,那就出问题了。因为在运行SoftwareUpdater时,Qt相关的dll(Qt5Core.dll等)是被占用的,删除不掉的。

因此最好是将SoftwareUpdater做成单个exe也能运行的。
参考这里
可以用到 Engima Virtual Box之类的工具来打包。

弄好之后,理论上就可以进行任意的升级了。

你可能感兴趣的:(Qt相关,qt,开发语言,windows)