QT程序打包部署

使用qt编写的GUI程序部署和发布流程。

Python&PyQt程序部署

使用pyinstaller工具打包部署使用pyqt编写的GUI程序。(适用于Windows和macOS)

# 使用pip安装pyinstaller工具
$ pip install pyinstaller
$ pyinstaller -F -w --noconfirm --icon myicno.ico mainwindow.py
# 其中:
# -F            表示打包为一个单独的exe文件
# -w            表示exe文件运行时隐藏cmd窗口(黑框)
# --icon        表示指定图标
# --noconfirm   表示覆盖原有文件时不询问

运行结束后,在当前目录下会生成两个文件夹build和dist。前者存放编译生成的一些中间文件,后者为distribution的简称,存放打包结束的文件。

使用-F生成的是单个exe文件,但是文件非常大。不添加-F选项得到的文件夹中包括程序主文件和大量依赖的dll文件。

不添加-w选项时,上述生成的文件运行时会出现一个cmd窗口,显示程序中的qDebug()信息。因此在最后的发布版本中建议加上-w选项,并注释掉qDebug信息。

当build和dist文件夹存在时,pyinstaller写入文件时会询问时候覆盖原有的文件,使用–noconfirm表示直接覆盖,不询问用户。

C++&QT程序部署

使用QT自带的windeployqt.exe工具。通常位于QT的安装路径的/bin下。

# 将Qt Creator编译生成的release文件夹下的内容复制到一个新的文件夹
# 此时直接点击mainwindow.exe运行失败,因为缺少一些依赖的dll文件
$ windeployqt.exe mainwindow.exe

运行结束后,这个文件夹下包含程序主文件和依赖的dll文件。

程序发布

可以使用Inno Setup工具将上述部署得到的包含dll和exe的文件夹打包成一个安装包发布。

可以填写程序名称、版本号、网址、LICENSE文件、README文件、安装包图标,并选择程序主exe文件、选择程序依赖文件夹,Inno Setup工具就会将所有需要的文件打包为一个setup.exe安装包。

用户可以点击该安装包将文件安装到系统目录(例如C:\ProgramFiles)中并创建桌面和开始菜单图标。

Lei Yang
Lei Yang
PhD candidate

My research interests include visual speech recognition and semantics segmentation.