发布QT生成的程序,用Enigma.Virtual.Box打包成单文件,以及与UPX的冲突

2021/7/26 11:05:41

本文主要是介绍发布QT生成的程序,用Enigma.Virtual.Box打包成单文件,以及与UPX的冲突,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 1)发布QT生成的程序
  • 2)用Enigma Virtual Box打包成单文件
  • 3)注意和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.


这篇关于发布QT生成的程序,用Enigma.Virtual.Box打包成单文件,以及与UPX的冲突的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程