windows下打包QT程序成安装包

来源:互联网 发布:经典知乎问答 编辑:程序博客网 时间:2024/04/30 00:52

总体思路

第一步:用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-cconfig\config.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 config\config.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文件,可以不加这个参数。

 

 

0 0
原创粉丝点击