首页 > 代码库 > Qt Mac 下软件Release 发布dmg
Qt Mac 下软件Release 发布dmg
1.首先当然是用Qt Creator,编译一个Release版本的软件
注意到编译出来的大小非常小,才420KB,因为一些类库还没包含进去的原因。现在还只能在你本地运行,拷贝到其他Mac电脑就不能运行了。
2.生成最终版的app
Qt安装目录的bin目录下有个工具叫macdeployqt就是供程序打包用的,使用非常简单,切换到该bin目录,执行
./macdeployqt yourappname.app 就可以了。就会自动在yourappname.app所在目录重新生成一个新的比较大的app了。
关于一些使用了第三方类库的,我还没研究过如何打包。
3.给app加上icon
右击你的app,选择显示包内容。里面有个叫info.plist的文件,里面记录了很多这个软件的信息,icon的信息也记录在这里。
首先把你制作好的图标icns后缀的文件拷贝到Resources目录下。关于icns制作,查看这篇文章《Qt Mac 下软件 icns图标制作》
然后编辑Info.plist文件。加上图标信息。
[html] view plaincopy
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
- <key>CFBundleIconFile</key>
- <string>icon.icns</string>
- <key>CFBundlePackageType</key>
- <string>APPL</string>
- <key>CFBundleGetInfoString</key>
- <string>Created by Qt/QMake</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleExecutable</key>
- <string>TextureUnpacker</string>
- <key>CFBundleIdentifier</key>
- <string>@BUNDLEIDENTIFIER@</string>
- <key>NOTE</key>
- <string>This file was generated by Qt/QMake.</string>
- </dict>
- </plist>
就是CFBundleIconFile key 对于的值。
当然做完这步发现app的图标还是默认的,没有更改成我们想要的图标。这个时候,右击app,选择显示信息(GetInfo),然后把icns文件拖到左上角的图标位置。
4.生成dmg文件
app的告一段落,我们来看下如何生成dmg文件。
通过 Disk Utility 创建一个空白的dmg镜像, File –> New –> Blank Disk Image
我这里大小为100MB,最终制作出来的dmg文件会自动裁剪掉空白的。
双击“TextureUnpacker” 出来的空白窗口,一切的东西都在这里布局了, 请准备好一背景图片。以下是我打包用的图片:
在空白处右键(或菜单的方式也可以),选择”Show View Options”,把background选为Picture,把需要作为背景的图片拖进来。
将上面我们制作好的app拽到“TextureUnpacker”里面,再做一个Applications快捷方式(右键–>Make Alias)
最终效果图如下:
将做好的dmg,转换一下就完成了,在Disk Utility 中如果没有的话,请将它拽回去就可以了,然后右键TextureUnpacker.dmg–>Convert”TextureUnpacker”
再给dmg增加icon,跟上面app的icon一样,右击get info,然后拖icns到icon的位置。
最后双击制作要的dmg文件,看下是否是我们期望的(忽略掉那些隐藏文件):
看到自己做的软件出现在Application是不是很酷呢?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。