DMG文件制作脚本

作者: 曾浩 | 来源:发表于2014-04-21 23:51 被阅读601次

MAC下app可以通过App Store下载,但是想要上架App Store,需要经历一番“磨难”(详见Apple家规吐槽),而且上架的app有各种各样的限制(如“沙盒”(wiki在这里运行,虽然能保护用户,但是对于像安装包这类的app,那就是噩梦了)。所以,也有不少app被制作为dmg文件(wiki在这里)来发布。
下面是一个dmg制作的脚本CreatDMG.sh:

#!/bin/sh
LogFile="/private/var/tmp/VTechMakeProductLog.txt";
fun()
{
    StateCode=$?
    c_time=$(date +%Y/%m/%d" "%H:%M:%S)
    /bin/echo "\n$c_time [build dmg] state=[$StateCode]:$1" >> $LogFile
    /bin/echo "$2" >> $LogFile 2>&1
}

if [ $# != 3 ]; then
echo "Usage: CreateDmg.sh volName srcDir destDmg"
echo $VOL
exit 0
fi
VOL="$1"
ORIGIN="$2"
Dest="$3"
DMG="$Dest.dmg"

if [ -e "$DMG" ]; then
rm -f "$DMG"
fi
echo ORIGIN=[$ORIGIN]
SIZE=$(du -sh $ORIGIN)
SIZE=$(echo $SIZE | awk -F'[ ]' '{printf $1}')
UNIT=$(echo $SIZE|awk '{print substr($0,length($0),length($0))}')
SIZE=$(echo $SIZE|awk '{print substr($0,0,length($0)-1)}')
echo unit=[$UNIT];
echo SIZE=[$SIZE]
if [ $UNIT = "G" ]; then
SIZE=$(echo $SIZE | awk '{print $0*1024*1024+10}')"M"
elif [ $UNIT = "M" ];then
SIZE=$(echo $SIZE | awk '{print $0+5}')"M"
elif [ $UNIT = "K" ];then
SIZE=$(echo $SIZE | awk '{print $0/1000+10}')"M"
elif [ $UNIT = "B" ];then
SIZE=$(echo $SIZE | awk '{print $0+1000*1000}')"B"
fi
echo [$SIZE]
if [ -e "/Volumes/$VOL" ]; then
hdiutil create -megabytes $SIZE -fs HFS+ -volname "$VOL" DmgTemp 2>&1
fi
cmdRes=$(hdiutil create -megabytes $SIZE -fs HFS+ -volname "$VOL" DmgTemp 2>&1)
fun "hdiutil create" "$cmdRes"
cmdRes=$(hdiutil mount DmgTemp.dmg 2>&1)
fun "hdiutil mount" "$cmdRes"
cmdRes=$(/usr/bin/codesign  --display --verbose=4  "$ORIGIN/$VOL.app" 2>&1)
fun "codesign check" "$cmdRes"
cmdRes=$(ditto -rsrcFork "$ORIGIN" "/Volumes/$VOL" 2>&1)
fun "ditto -rsrcFork" "$cmdRes"
cmdRes=$(hdiutil eject "/Volumes/$VOL" 2>&1)
fun "hdiutil eject" "$cmdRes"
cmdRes=$(hdiutil convert DmgTemp.dmg -format UDZO -o   "$DMG" 2>&1)
fun "hdiutil convert" "$cmdRes"
rm "DmgTemp.dmg"

使用方法:

CreateDmg.sh   bundle_name  bundle_path  dmg_full_path

如:需要打包的Learning_Lodge_Cleaner.app存放在/Users/zenghao/Desktop/DMG目录中,最后制作为Users/zenghao/Desktop/Clear.dmg文件:

CreateDmg.sh  Learning_Lodge_Cleaner  /Users/zenghao/Desktop/DMG  /Users/zenghao/Desktop/Clear

相关文章

网友评论

    本文标题:DMG文件制作脚本

    本文链接:https://www.haomeiwen.com/subject/jvoltttx.html