1. 程式人生 > >Mac OS 指令碼生成dmg安裝檔案

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/[email protected]
sips -z 32 32     pic.png --out icons.iconset/icon_32x32.png
sips -z 64 64     pic.png --out icons.iconset/
[email protected]
sips -z 64 64 pic.png --out icons.iconset/icon_64x64.png sips -z 128 128 pic.png --out icons.iconset/[email protected] sips -z 128 128 pic.png --out icons.iconset/icon_128x128.png sips -z 256 256 pic.png --out icons.iconset/[email protected] sips -z 256 256 pic.png --out icons.iconset/icon_256x256.png sips -z 512 512 pic.png --out icons.iconset/
[email protected]
sips -z 512 512 pic.png --out icons.iconset/icon_512x512.png sips -z 1024 1024 pic.png --out icons.iconset/[email protected]

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下,雙擊後,看到文中第一張效果圖。