Mac OS 脚本生成dmg安装文件

本文将介绍通过脚本和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/bash

TOP_DIR=$(pwd)
echo "----TOP_DIR----"
echo $TOP_DIR

SRC_DIR=${TOP_DIR}/AutoLaunchMain
PRODUCT_NAME=AutoLaunchMain

CONFIGURATION=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_COMMAND

echo "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}.app


cd ${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下,双击后,看到文中第一张效果图。

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值