【QT】记录一次QT程序发布exe过程

2024-06-13 1016阅读

记录一次QT程序发布exe过程

  • 使用windeploy与enigma发布独立的QT程序
    • 第一步 QT编译输出 **release** 版本
    • 第二步 QT 自带 windepoyqt 补全链接库
    • 第三步 enigma virtual box压缩打包为单一exe
    • 最后
      • 【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自动部署
      • 【2024-06-09 12】 - 【补充】 关于打包后exe臃肿的问题以及软件生成新文件(文件夹)相关
        • exe文件太尼玛大了???
        • exe关联新文件(文件夹)的生成(文件外露)
        • 参考

          使用windeploy与enigma发布独立的QT程序

          第一步 QT编译输出 release 版本

          你的编译器是啥就用啥就好了,我是 “ msvc 2019 64位 ”,选择“release”

          【QT】记录一次QT程序发布exe过程

          这时候你会遇到问题如下:

          【QT】记录一次QT程序发布exe过程

          很显然,这是同一级目录缺乏动态链接库 xx.dll 造成的,原来我都是傻傻的一个个找,拷贝粘贴。 **~我是傻逼~ **。

          正确的办法: 我们来到第二步。

          第二步 QT 自带 windepoyqt 补全链接库

          1. 在开始菜单中找到并打开你对应编译器的qt控制台工具

            【QT】记录一次QT程序发布exe过程

          2. 切到对应目录或者直接把exe托人控制台,运行

            windeployqt xxxxx.exe

          【QT】记录一次QT程序发布exe过程

          这时候,你会发现你的exe可以打开了,啦啦啦。。。

          我比较顺序,如果你遇到其他问题,可以留言一起解决。

          但是,目前带了一堆库文件,很臃肿,不方便发给别人用。

          于是,来到第三步。

          第三步 enigma virtual box压缩打包为单一exe

          这部分有点坑,看完再操作,或者直接到下面最后查看完坑。

          这个就得使用第三方应用了,下载链接如下:

          enigma压缩打包

          【QT】记录一次QT程序发布exe过程

          【QT】记录一次QT程序发布exe过程

          【QT】记录一次QT程序发布exe过程

          当我以为好l=一切都好了的时候,我还特意检查只有一个exe的情况下,点击运行生成的exe,MFK,居然 又报错.

          【QT】记录一次QT程序发布exe过程

          问题出在哪里呢,其实是因为直接拖入release文件夹导致(蛮猜哈)

          我们点击ADD(增加) : 增加文件夹【递归】 VERY 重要,然后执行封包,您再看看。

          谢天谢地,终于在运行起来了。

          【QT】记录一次QT程序发布exe过程

          最后

          如果你要经常管理-发布,那么你就把这写一个bat,调用qt的控制台执行对应的操作,然后enigma 的工程也可以保存到你的项目目录,方便多次使用。

          【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【QtDeploy2exe.bat】半自动部署

          会玩的自行修改,写的不好…轻喷。。。

          【QT】记录一次QT程序发布exe过程

          自己新建bat,复制粘贴,修改路径参数,然后用qt的控制台去运行,半自动。

          @echo off
          rem QT打包小助手 by Iamzui (有需要自行修改)
          echo QT pack to one single exe file helper by Iamruzi
          rem release文件夹
          set RELEASE_DIR=D:\Works\Dr_Zhong\Projects\QtProjects\GControl2024\release
          rem release文件夹app路径
          set APP_DIR=%RELEASE_DIR%\GControl.exe
          rem 打包压缩工具Enigma Virtual Box路径 
          set ENIGMAVBOX_PATH=D:\Softwares\Tools\Deploy\Enigma Virtual Box\enigmavb.exe
          cd /d "%RELEASE_DIR%"
          rem /bin文件夹判定
          if not exist bin (
              mkdir bin
              echo Folder 'bin' created.
          ) else (
              echo Folder 'bin' already exists.
          )
          rem 运行windeployqt 打包
          echo Deploying Qt libraries...
          windeployqt   %APP_DIR%
          rem 拷贝exe主文件到bin
          rem copy "%APP_DIR%" ".\bin\GControl.exe"
          echo Deployment completed.
          rem deploy结束后打开对应文件夹
          rem start "" "%RELEASE_DIR%"
          rem 运行Enigma Virtual Box打包压缩
          echo Running Enigma Virtual Box...
          start "" "%ENIGMAVBOX_PATH%"
          echo Please follow the instructions in the Enigma Virtual Box dialog. You now need do it by your own hands.
          echo 1. Choose input and output file path.(your oringinal exe and boxed file,you can rename it).
          echo 2. Add folder, choose add "ADD FOLDER RECURSIVE".
          echo 3. Click "File option", "enable files virtualization" and choose "Compress files".
          echo 4. Click "Process",and just wait for a while,and check in your deploy folder....
          echo Bat  run completed.
          pause
          

          【2024-06-09 12】 - 【补充】 关于打包后exe臃肿的问题以及软件生成新文件(文件夹)相关

          exe文件太尼玛大了???

          问题来源:

          xx: 哎呀我妈呀,我的exe终于出来了,也可以正常运行不报错,太好了。。。

          如子: 你看看你最后打包的exe文件大小

          xx: 我了个豆,1个多g,你妈,这。。。

          如子:想解决这个问题,我给个最基础的方案,放在下面了。当然还有很多奇淫技巧,减小exe的大小方法,这个是从根本解决的最基本方法。

          xx:感谢感谢!

          这里再说明一下,就是bat最好针对的修改一下,就是把windepoyqt生成的库文件,生成放在额外的一个文件,应为release大多数都有不少编译后的中间文件,如果后面使用enigma压缩,就会导致不必要的文件,使得整个文件过于臃肿。

          调整之后,我的exe从1.2G来到了170多M,不错。。。

          这样就 简而不大

          exe关联新文件(文件夹)的生成(文件外露)

          这个就是enigma设置一下就好了,主要针对一些配置,本地数据库文件打包后没有直观的再本地生成的问题。

          【QT】记录一次QT程序发布exe过程

          1. 关于文件

          这个没啥特殊,你代码编写的时候,注意生成的数据文件的相对路径要调整。

          比如你的配置文件是config.json,代码里最好是和生成exe文件同一级别,要不然找不着。

          1. 关于文件夹

          这个要注意了!!!如果你的文件夹是exe生成的,同名字的文件夹记住不要打包到exe里。。。

          • [<(^-^)> ] 如果我遇到问题,我会持续在这里更新

            参考

            [1]: https://blog.csdn.net/xideaha/article/details/132382764
            
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]