您的位置:首页 > 编程语言 > Qt开发

windows下打包QT程序成安装包

2017-04-17 15:50 791 查看
总体思路

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

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: