总体思路:
第一步:将需要的文件拷贝到目标文件夹.
第二步:用QT installer framework 打包
具体步骤:
第一步: qt-installer-framework 安装;
下载地址: http://download.qt.io/official_releases/qt-installer-framework/2.0.5/
下载 QtInstallerFramework-linux-x64.run后双击安装(如果双击打不开,请右键->属性 后勾上允许以应用程序方式打开)
第二步: QTCreator 中release运行程序后关掉
第三步: 建立目录结构与文件(我以Joo为根目录):(官网说明:http://doc.qt.io/qtinstallerframework/ifw-tutorial.html)
1. Joo/config/config.xml (安装包的配置信息)
<?xml version="1.0" encoding="UTF-8"?> <Installer> <Name>Joo</Name> <Version>0.0.1</Version> <Title>Joo Installer</Title> <Publisher>Joo soft</Publisher> <StartMenuDir>Joo</StartMenuDir> <TargetDir>@rootDir@/Joo</TargetDir> </Installer>
2. Joo/packages/com.joo.joo/data/
3. Joo/packages/com.joo.joo/meta/package.xml (程序的组件信息)
<?xml version="1.0" encoding="UTF-8"?> <Package> <DisplayName>Joo</DisplayName> <Description>Joo describtion</Description> <Version>0.0.1</Version> <ReleaseDate>2017-05-51</ReleaseDate> <Name>com.joo.joo</Name> </Package>
第四步:data目录下将 第二步生成的目录下可执行文件和相关库拷贝到data目录下 ,并将QT库文件一起拷贝进来
第五步: QT installer framework打包, 运行:binarycreator -c config\config.xml -p packages yourpackage
binarycreator就是 QT installer framework人命令 , -c 是指定安装包配置文件 -p 是指定打包进去的文件包, 文件包的是可任取,但里面是有meta包和data包,具体请看第三步.
例:
~/Qt/QtIFW2.0.5/bin/binarycreator -c config/config.xml -p packages JooInstaller.run
备忘(完整脚本, 可根据自己的需求改写,注意joo.sh是个脚本文件,功臣是 来用命令行用来启动程序的,可不要):
#!/bin/sh echo "start..." exe="../../build-Joo-Desktop_Qt_5_8_0_GCC_64bit-Release/Joo" des=`pwd`/ReleaseInstaller32 desconfig=$des/config desjoo=$des/packages/com.joo.joo desmeta=$desjoo/meta desdata=$desjoo/data deslib=$desdata/Libs rm -rf $des mkdir -p $desconfig mkdir -p $desmeta mkdir -p $deslib cp -Rv config.xml $desconfig cp -Rv package.xml $desmeta cp -Rv Joo.sh $desdata cp -Rv $exe $desdata cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Network.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5WebSockets.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Widgets.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Gui.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Core.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5DBus.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libicui18n.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libicuuc.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libicudata.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/plugins/platforms $desdata cd $des pwd ~/Qt/QtIFW2.0.5/bin/binarycreator -c config/config.xml -p packages JooInstaller.run pwd cd $des/.. echo "finish."
备忘2(直接打包成运行包):
#!/bin/sh echo "start..." exe="../../build-Joo-Desktop_Qt_5_8_0_GCC_64bit-Release/Joo" des=`pwd`/Release32 deslib=$des/Libs mkdir -p $deslib cp -Rv Joo.sh $des cp -Rv $exe $des cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Network.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5WebSockets.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Widgets.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Gui.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5Core.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libQt5DBus.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libicui18n.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libicuuc.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/lib/libicudata.so* $deslib cp -Rv ~/Qt5.8.0/5.8/gcc_64/plugins/platforms $des echo "finish."