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

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

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

此时我的更新程序是和主程序放在一起的,两者调用的是一样的Qt的dll。
在这里插入图片描述

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

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

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

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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您可以使用Enigma Virtual Box打包工具将Qt6程序打包可执行(exe)。首先,确保您已经使用Release方式编译了您的Qt6程序。然后,按照以下步骤进行操作: 1. 从Qt安装目录下的bin文件夹中复制libgcc_s_dw2-1.dll,libwinpthread.dll和libstdc-6.dll这三个动态库文件,并将它们粘贴到您的Qt6程序所在的文件夹中。 2. 下载并安装Enigma Virtual Box打包工具。 3. 在Enigma Virtual Box中,选择您的Qt6程序所在的文件夹作为源路径。 4. 设置输出路径和输出文件名。 5. 在打包选项中,选择需要包含的文件和文件夹。 6. 点击打包按钮,Enigma Virtual Box将会将您的Qt6程序和所需的依赖文件打包一个独立的可执行文件(exe)。 至此,您已经功将Qt6程序打包了可执行文件(exe)。请注意,如果您需要创建类似于安装程序的安装包,您可能需要使用到其他工具,如Inno Setup。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Qt程序打包一个单独exe的方法](https://blog.csdn.net/childbor/article/details/125283893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [QT打包exe安装包](https://blog.csdn.net/weixin_47604497/article/details/127824369)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值