发布QT程序+用Enigma.Virtual.Box打包单文件+与UPX的冲突

1)发布QT生成的程序

我们用QT简体中文首页)编译好执行程序就直接运行,则会发现少很多动态链接库,如下图:
在这里插入图片描述
在这里插入图片描述
类似的一大堆错误。
那么就需要用QT自带的部署命令。
将编译好的release版本程序放入一个空目录,打开QT的命令行,执行windeployqt命令:
在这里插入图片描述
比如我的例子是:
在这里插入图片描述
执行:

> windeployqt D:\VM\ShareFolder\softwares\test\EricssonBackupParse.exe

完成后多了很多目录和库,程序就可以正常运行了:
在这里插入图片描述
当然不需要多国语言的话,translations目录是可以删掉的。

2)用Enigma Virtual Box打包成单文件

通过上面的例子可以看到,发布一个QT程序需要很多目录和文件,交给前方需要打包成压缩包,用的时候需要解开压缩包,始终觉得稍微不方便。

这时候一般就可以用Enigma Virtual Box打包成单文件再发布。

同样刚才的例子:

  1. 先选择主exe文件。
  2. 再把主exe文件所在目录当作【%DEFAULT FOLDER%】递归加入,请注意,这里要去掉不必要的文件和文件夹,比如主文件本身,以及日志,测试生成的临时文件等。
  3. 这个例子中不需要注册表,自己的项目得看情况。
  4. 注意可以在”文件选项“中选择压缩,生成的结果小一些。

在这里插入图片描述
在这里插入图片描述
点击打包按钮,等待完成:
在这里插入图片描述
最后把生成好的文件留下了,其他文件可以删掉了。
此例打包成单文件完成后有20多MB。。。
在这里插入图片描述

3)注意和UPX压缩冲突

如果你也喜欢顺手用UPX压缩主程序exe文件,那么再用Enigma Virtual Box打包后,程序是无法正常执行的(至少在我这里是这样)。

也就是说你不能先用UPX压缩,再Enigma Virtual Box打包。

D:\VM\ShareFolder\softwares\test>upx -9 -k EricssonBackupParse.exe
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96w       Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
    462336 ->    209920   45.40%    win64/pe     EricssonBackupParse.exe                                                                                                                                                                        Packed 1 file.

D:\VM\ShareFolder\softwares\test>

但是如果先用Enigma Virtual Box打包,再UPX压缩则会报错。
嗯,至少不会不能运行。

                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2020
UPX 3.96w       Markus Oberhumer, Laszlo Molnar & John Reiser   Jan 23rd 2020

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
upx: EricssonBackupParse_v1.05.exe: CantPackException: section size problem

Packed 1 file: 0 ok, 1 error.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值