本文将介绍通过脚本和appdmg来生成dmg安装文件的方法。文中例子的工程名为AutoLaunchMain。

最终生成的dmg安装效果如下图

工具准备

appdmg安装方式:命令行中输入

npm install -g appdmg

资源准备

工程根目录下创建目录dmgResources,里面的内容如下:

appdmg.json文件中包含安装界面的title,title左侧的图标,背景图片,下方图标的尺寸及位置。具体的参数定义可参考appdmg。

{"title": "AutoLaunchMain","icon-size": 128,"background": "background.png","icon": "icon.icns","contents": [{ "x": 140, "y": 200, "type": "file", "path": "AutoLaunchMain.app" },{ "x": 370, "y": 200, "type": "link", "path": "/Applications" }]
}

Icon.icns生成方法:

1.创建目录icon,创建命名为icons.iconset的文件夹,放入尺寸为1024*1024的应用图标,命名为pic.png。

2.进入到icon目录,执行下面脚本,会在icons.iconset中生成各种尺寸的图标。

sips -z 16 16     pic.png --out icons.iconset/icon_16x16.png
sips -z 32 32     pic.png --out icons.iconset/icon_16x16@2x.png
sips -z 32 32     pic.png --out icons.iconset/icon_32x32.png
sips -z 64 64     pic.png --out icons.iconset/icon_32x32@2x.png
sips -z 64 64     pic.png --out icons.iconset/icon_64x64.png
sips -z 128 128   pic.png --out icons.iconset/icon_64x64@2x.png
sips -z 128 128   pic.png --out icons.iconset/icon_128x128.png
sips -z 256 256   pic.png --out icons.iconset/icon_128x128@2x.png
sips -z 256 256   pic.png --out icons.iconset/icon_256x256.png
sips -z 512 512   pic.png --out icons.iconset/icon_256x256@2x.png
sips -z 512 512   pic.png --out icons.iconset/icon_512x512.png
sips -z 1024 1024   pic.png --out icons.iconset/icon_512x512@2x.png

3.在icon目录下执行下面的脚本,生成icns文件

iconutil -c icns icons.iconset -o Icon.icns

创建打包脚本

工程根目录下创建build.sh文件,文件的内容如下。主要功能是使用xcodebuild编译生成.app文件。

#!/bin/bashTOP_DIR=$(pwd)
echo "----TOP_DIR----"
echo $TOP_DIRSRC_DIR=${TOP_DIR}/AutoLaunchMain
PRODUCT_NAME=AutoLaunchMainCONFIGURATION=Release
BUILD_SCHEME=${PRODUCT_NAME}_dmg# 使用workspace管理的项目
#CLEAN_COMMAND="xcodebuild -workspace ${PRODUCT_NAME}.xcworkspace -scheme ${BUILD_SCHEME} -configuration ${CONFIGURATION} -sdk macosx"
#BUILD_COMMAND="xcodebuild -workspace ${PRODUCT_NAME}.xcworkspace -scheme ${BUILD_SCHEME} -configuration ${CONFIGURATION} -sdk macosx"# 通过xcodeproj管理的项目
CLEAN_COMMAND="xcodebuild -project ${PRODUCT_NAME}.xcodeproj -scheme ${BUILD_SCHEME} -configuration ${CONFIGURATION} -sdk macosx"
BUILD_COMMAND="xcodebuild -project ${PRODUCT_NAME}.xcodeproj -scheme ${BUILD_SCHEME} -configuration ${CONFIGURATION} -sdk macosx"$CLEAN_COMMAND clean
$BUILD_COMMANDecho "Build succeed"

新建打包Scheme

Demo工程的project为AutoLaunchMain,为它创建一个用来打包的Scheme,命名为AutoLaunchMain_dmg。

编辑新建的AutoLaunchMain_dmg Scheme。打开Build子菜单,选中Post-actions,添加一个Script Action。

在弹出的界面中输入下面脚本内容。代码的含义是在工程目录下创建一个用来生成dmg的目录result。将编译生成的.app文件复制到这个目录中,然后使用appdmg工具生成.dmg安装包。

echo ${SRCROOT}# 创建resul目录
RESULT_DIR=${SRCROOT}/result
if [ -e ${RESULT_DIR} ] ;then
rm -r ${RESULT_DIR}
fi
mkdir ${RESULT_DIR}echo "Copy app to result dir"# 拷贝资源到result目录
RESOURCE_DIR=${SRCROOT}/dmgResources
cp -R ${RESOURCE_DIR}/ ${RESULT_DIR}/# 拷贝app文件到result目录
PRODUCT_NAME=AutoLaunchMain
PRODUCT_APP=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
cp -R ${PRODUCT_APP} ${RESULT_DIR}/${PRODUCT_NAME}.appcd ${RESULT_DIR}
# package dmg
echo "package dmg..."
appdmg appdmg.json ${PRODUCT_NAME}.dmg# remove no used files
rm -rf *.app
find . -type f -not -name '*.dmg' | xargs rm -rf

将Provide build settings form设置为AutoLaunchMain,最终效果如下图

执行打包脚本

进入到工程目录下,执行脚本

sh build.sh

生成的AutoLaunchMain.dmg在工程目录/result下,双击后,看到文中第一张效果图。

Mac OS 脚本生成dmg安装文件相关推荐

  1. Qt在 Mac系统发布程序(widgets和quick2)生成dmg安装文件。

    Qt提供了macdeployqt工具,借助于此,在OS X上发布Qt写的程序几乎是所有平台中最简单的, 在对应的Qt 安装目录下可以看到,我的电脑安装路径是:D/Qt/Qt5.4.1/5.4/clan ...

  2. Mac OS平台下如何创建dmg安装文件

    本文将介绍通过脚本和appdmg来生成dmg安装文件的方法.文中例子的工程名为AutoLaunchMain. 最终生成的dmg安装效果如下图 1.工具准备 appdmg安装方式:命令行中输入 npm ...

  3. mac bochs 调试linux,Mac OS X下编译安装带debugger的bochs

    bochs支持两种方式的debugger:(1)自带的debugger(internal debugger); (2)使用gdb-stub方式来debug. 但是这两种方式不兼容,编译的时候只能选其一 ...

  4. Mac OS X上下载安装和配置hadoop指南

    Mac OS X上下载安装和配置hadoop指南 jdk下载 下载hadoop 添加Hadoop环境变量 修改Hadoop的配置文件 启动Hadoop jdk下载 [可以在这个网盘去下载] https ...

  5. Mac OS自带PHP安装redis扩展

    安装redis 在mac OS中可以使用brew命令进行安装redis:mac OS使用brew命令安装软件 安装命令:brew install redis 因为我已经安装过了,这里就不在赘述. 安装 ...

  6. mac服务器文件夹权限设置密码,如何在Mac os优胜美地给文件和文件夹加密

    如果你正在寻找另一种方式来保护在Mac OS X您的个人文件,请继续阅读,我将在这篇文章涵盖如何用密码保护个人文件,并使用iWork保护文件夹,微软Office的Automator,磁盘工具,终端. ...

  7. 在windows下制作mac os x的启动安装U盘

    在windows下制作mac os x的启动安装U盘 制作教程:在windows下制作mac os x的启动安装U盘

  8. 怎么在mac下运行映像dmg_仅用Mac OS X系统映像文件(dmg)安装系统

    可以在Mac OS X机器上进行无损分区,使用Mac OS X磁盘工具内的恢复功能,将映像文件恢复到其中一个区,并用此区启动,来进行安装. 可以用以下方法分区: 打开终端,输入: diskutil l ...

  9. 一帖搞定U盘系统制作及安装苹果mac os引导U盘安装windows7

    坛友有问题可以直接微博问我:http://t.qq.com/juqiandai 之前在<全民普及 版主现身教你用苹果AIR装win7(桌面上pro air razer)>那篇帖子上用的外置 ...

最新文章

  1. 【VB】学生信息管理系统5——数据库代码
  2. php分布式redis实现session共享
  3. 如何使wordpress导航栏在新窗口打开
  4. 编程之美3.1 字符串移位包含问题
  5. 从排序数组中删除重复项
  6. 派单o2o全开源版 v11.6.0 全新UI版小程序模块
  7. php 封装JavaScript类
  8. Linux文件操作命令(二)
  9. Kafka是如何处理Netflix每天2万亿条消息的?
  10. Kettle处理300万条数据-问题整理
  11. 可道云kodexplorer隐藏免费版按钮及简单修改使用方法
  12. Dalvik字节码和Smali基本语法
  13. C++与OpenCV同时批量处理图像数据
  14. 剖析SPDK读写NVMe盘过程--从hello_world开始
  15. MultiValueMap是什么?怎么使用?
  16. Scrapy爬虫入门教程五 Selectors(选择器)
  17. MySQL 常用命令速查表:日常开发、求职面试必备良方!
  18. Open vSwitch + VLAN 组网
  19. 京东凡客模式遭质疑 电子商务或回归本质
  20. linux 两个子进程,父进程创建两个子进程,在收到中断信号后杀死两个子进程

热门文章

  1. 【UiBot实战教程】梦想云ERP系统数据获取和填写(一)
  2. 搜索专题(不定期更新)
  3. 匹配问题与匈牙利算法
  4. 华为正式发布鸿蒙回看,华为正式发布“鸿蒙”操作系统
  5. Wireshark网络抓包(九)——为什么我的 Wireshark 抓不到/抓不全 HTTP 数据包
  6. 我的新概念英语第四册
  7. 如何在Keil uVision5建立飞思卡尔K60开发板的工程
  8. Linux shell test命令用法详解
  9. 银行卡基础知识 - I类-II类-III类账户
  10. Docker快速搭建OpenProject项目管理协作平台