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