概述
总体思路:
第一步:用windeployqt.exe成生可执行程序 (参考:http://blog.csdn.net/liuyez123/article/details/50462637)
第二步:用QT installer framework 打包 (参考:http://www.tuicool.com/articles/zaq6Zf2 http://blog.csdn.net/sunshinwong/article/details/37764719)
具体步骤:
第一步: QTCreator 中release运行程序后关掉
第二步: QT installer framework 安装,配制环境变量(略)
第三步: 建立目录结构与文件(我以Joopic为根目录):Joopic/config/config.xml Joopic/packages/com.joopic.joopicplayer/data/
Joopic/packages/com.joopic.joopicplayer/meta/package.xml
package.xml 和 config.xml 文件内容格式请见后文
例:
rm -rf ReleaseInstaller32
mkdir ReleaseInstaller32
mkdir ReleaseInstaller32/config
mkdir ReleaseInstaller32/packages
mkdir ReleaseInstaller32/packages/com.joobot.joopic
mkdir ReleaseInstaller32/packages/com.joobot.joopic/data
mkdir ReleaseInstaller32/packages/com.joobot.joopic/meta
cp -Rv config.xml ReleaseInstaller32/config/
cp -Rv package.xml ReleaseInstaller32/packages/com.joobot.joopic/meta/
第四步:data目录下将 第一步生成的目录下的所有(执行文件)文件copy到data目录下 ,并将下一步windeployqt.exe拷贝不进的文件一起拷贝进来
例:
cp -Rv ../../build-JooPic-Desktop_Qt_5_8_0_MinGW_32bit-Release/release/Joopic.exe ReleaseInstaller32/packages/com.joobot.joopic/data
cp -Rv ../../3rdparty/openssl/rel_win_32_dll/bin/*.dll ReleaseInstaller32/packages/com.joobot.joopic/data
cd ReleaseInstaller32/packages/com.joobot.joopic/data/
cp -Rv E:/Qt/Qt5.8.0/vcredist/vcredist_msvc2015_x86.exe .
cp -Rv E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/libgcc_s_dw2-1.dll .
cp -Rv E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/libstdc++-6.dll .
cp -Rv E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/libwinpthread-1.dll .
第五步:windeployqt.exe 拷贝链接库
例:E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/windeployqt.exe Joopic.exe
第六步: 运行:binarycreator.exe-cconfigconfig.xml-ppackages JoopicPlayer.exe -v 打包
例:
binarycreator.exe -c config/config.xml -p packages JoopicInsaller.exe -v
mv JoopicInsaller.exe ../
config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>Joopic Player</Name>
<Version>0.0.1</Version>
<Title>Joopic Player Installer</Title>
<Publisher>Joopic soft</Publisher>
<StartMenuDir>JoopicPlayer</StartMenuDir>
<TargetDir>@rootDir@/Joopic</TargetDir>
</Installer>
package.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>Joopic Player</DisplayName>
<Description>Joopic Player for play pics.</Description>
<Version>0.0.1</Version>
<ReleaseDate>2017-04-17</ReleaseDate>
<Name>com.joopic.joopicplayer</Name>
</Package>
备忘:
# win下打包命令:
# 1.release编译运行
# 2.将release下/release/JoopicPlayer.exe拷到data目录下(非第一次时替换原先的)
# 3.在cmd中进入data目录下执行windeployqtproject.exe ,自动将连接库拷到data目录下
# 4.(初次建data目录时才做)再将其他第三方库拷到data目录下: ffmpeg的库(我程序用到ffmpeg),
# 和QT bin目录下的libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll(此三个库windeployqtproject没有拷))
# 5.cmd中JoopicPlayerInstaller目录下运行:binarycreator.exe -c configconfig.xml -p packages JoopicPlayerInstaller.exe -v
# 这样在 JoopicPlayerInstaller目录下生成了JoopicPlayerInstaller.exe安装包
备忘2(完整角本,请根据自己需求改写):
echo "start..."
rm -rf ReleaseInstaller32
mkdir ReleaseInstaller32
mkdir ReleaseInstaller32/config
mkdir ReleaseInstaller32/packages
mkdir ReleaseInstaller32/packages/com.joobot.joopic
mkdir ReleaseInstaller32/packages/com.joobot.joopic/data
mkdir ReleaseInstaller32/packages/com.joobot.joopic/meta
cp -Rv config.xml ReleaseInstaller32/config/
cp -Rv package.xml ReleaseInstaller32/packages/com.joobot.joopic/meta/
cp -Rv ../../build-JooPic-Desktop_Qt_5_8_0_MinGW_32bit-Release/release/Joopic.exe ReleaseInstaller32/packages/com.joobot.joopic/data
cp -Rv ../../3rdparty/openssl/rel_win_32_dll/bin/*.dll ReleaseInstaller32/packages/com.joobot.joopic/data
cd ReleaseInstaller32/packages/com.joobot.joopic/data/
cp -Rv E:/Qt/Qt5.8.0/vcredist/vcredist_msvc2015_x86.exe .
cp -Rv E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/libgcc_s_dw2-1.dll .
cp -Rv E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/libstdc++-6.dll .
cp -Rv E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/libwinpthread-1.dll .
E:/Qt/Qt5.8.0/5.8/mingw53_32/bin/windeployqt.exe Joopic.exe
cd ../../..
pwd
#cd D:/QTWorkspace/JoobotPCv1.0/makepackage/win/ReleaseInstaller32
binarycreator.exe -c config/config.xml -p packages JoopicInsaller.exe -v
mv JoopicInsaller.exe ../
pwd
echo "finish."
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
补充:MAC OS X系统平台的发布:(参考:http://blog.csdn.net/liuyez123/article/details/50462637)
由于Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行。
比较幸运的是,Qt为我们提供了macdeployqt工具,借助于此,在OS X上发布Qt写的程序几乎是所有平台中最简单的。
注:我电脑配置了Qt的bin环境,所以可以直接使用macdeployqt,如果没配置,可以用绝对路径去找。
1.发布widgets程序
a) 这个比较方便。选择Release模式,编译
b) 运行macdeployqt
对于我的工程,命令是:
macdeployqt /Users/Ocean/Desktop/build-untitled-Desktop_5_5_1_64bit-Release/untitled.app -dmg
然后回车,就打包好了。之后我们会发现,app目录下多了一个dmg文件
此dmg文件,里面的app就是我们发布的app了。把dmg拷贝给别人,别人就可以直接使用了。
l 注:如果直接拷贝app文件给别人,别人是无法直接运行的,会有权限问题(要用chmod给可执行文件加上x权限才可以运行)。而压缩过(zip或者dmg)后,拷贝给别人,别人是可以直接运行,没有权限问题。
l 注:-dmg的意思就是在拷贝好库后,生成一个dmg文件,可以不加这个参数。
最后
以上就是文静薯片为你收集整理的windows下打包QT程序成安装包的全部内容,希望文章能够帮你解决windows下打包QT程序成安装包所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复