Ubuntu下QT程序的发布

由于QT程序需要在没有QT环境的PC上运行,所以需要准备程序的发布包,包含需要的bin文件、库文件、插件、配置文件以及要发布的程序,如下图所示。

Ubuntu下QT程序的发布_第1张图片

 准备程序的桌面启动器文件和桌面图标,准备好的文件如下图所示。

Ubuntu下QT程序的发布_第2张图片

 桌面图标就是一个PNG图片,作为显示在ubuntu的应用列表中的图标。

Ubuntu下QT程序的发布_第3张图片

 桌面启动器文件(APMonitor.desktop)是重点,文件内容如下所示: 

[Desktop Entry]
Name = APMonitor
comment = APMonitor
Exec = /usr/local/share/APMonitor/APMonitor
Icon = /usr/local/share/APMonitor/APMonitor.png
Terminal =false
Type = Application

Name是应用程序的名称;Exec是程序的安装路径;Icon是应用程序图标的路径。

使用命令将发布包APMonitor制作成压缩文件:

$tar –zcvf APMonitor.tar.gz APMonitor/

准备安装程序的脚本,内容如下所示:

#!/bin/bash
CDIR=/usr/local/share
INSTALLDIR=$CDIR/APMonitor
if [ -d "$INSTALLDIR" ]; then
   sudo rm -rf "$INSTALLDIR"
fi
ARCHIVE=`awk '/^__ARCHIVE_BOUNDARY__/ { print NR + 1; exit 0; }' $0`
tail -n +$ARCHIVE $0 > APMonitor.tar.gz
sudo tar -zpxf APMonitor.tar.gz -C $CDIR
sudo rm APMonitor.tar.gz
sudo cp -f $INSTALLDIR/APMonitor.desktop /usr/share/applications/
sudo chmod +x /usr/share/applications/APMonitor.desktop
exit 0
__ARCHIVE_BOUNDARY__

上面文件最后不能有空格。

__ARCHIVE_BOUNDARY__是脚本文件和压缩包的分界线。

if [ -d "$INSTALLDIR" ]; then
   sudo rm -rf "$INSTALLDIR"
fi

这段代码是判断如果安装目录存在,就删除。

ARCHIVE=`awk '/^__ARCHIVE_BOUNDARY__/ { print NR + 1; exit 0; }' $0`

根据分界线来找到压缩包的位置,然后使用下面的命令来提取压缩包并解压。

tail -n +$ARCHIVE $0 > APMonitor.tar.gz
sudo tar -zpxf APMonitor.tar.gz -C $CDIR

然后删除压缩包

sudo rm APMonitor.tar.gz

将桌面启动器文件放到/usr/share/applications/,并赋予可执行的权限。

sudo cp -f $INSTALLDIR/APMonitor.desktop /usr/share/applications/
sudo chmod +x /usr/share/applications/APMonitor.desktop

最后使用exit 0来中断脚本的执行。

最后一步是将安装脚本和程序压缩包连接成run文件

$cat install.sh APMonitor.tar.gz > APMonitor.run

到此,QT程序的安装包已经做好了。使用之前需要给他添加可执行的权限。

执行$./APMonitor.run进行安装,安装路径是/usr/local/share/APMonitor,这个路径在桌面启动器文件中指定的,可根据实际情况进行修改。

Ubuntu下QT程序的发布_第4张图片

你可能感兴趣的:(Linux开发,qt,ubuntu,linux,应用程序发布)