1#!/bin/sh 2 3if [ $# != 2 ]; then 4 echo 5 echo "Usage: Make_MI_dmg.sh kind version" 6 echo 7 exit 1 8fi 9 10KIND="$1" 11VERSION="$2" 12 13if [ "$KIND" = "CLI" ] || [ "$KIND" = "cli" ]; then 14 KIND="CLI" 15elif [ "$KIND" = "GUI" ] || [ "$KIND" = "gui" ]; then 16 KIND="GUI" 17else 18 echo 19 echo "KIND must be either [CLI | cli] or [GUI | gui]" 20 echo 21 exit 1 22fi 23 24APPNAME="MediaInfo" 25APPNAME_lower=`echo ${APPNAME} |awk '{print tolower($0)}'` 26KIND_lower=`echo ${KIND} |awk '{print tolower($0)}'` 27SIGNATURE="MediaArea.net" 28FILES="tmp-${APPNAME}_${KIND}" 29TEMPDMG="tmp-${APPNAME}_${KIND}.dmg" 30FINALDMG="${APPNAME}_${KIND}_${VERSION}_Mac.dmg" 31 32# Clean up 33rm -fr "${FILES}-Root" 34rm -fr "${FILES}" 35rm -f "${APPNAME}.pkg" 36rm -f "${TEMPDMG}" 37rm -f "${FINALDMG}" 38 39echo 40echo ========== Create the package ========== 41echo 42 43mkdir -p "${FILES}/.background" 44cp ../../License.html "${FILES}" 45cp "../../Release/ReadMe_${KIND}_Mac.txt" "${FILES}/ReadMe.txt" 46cp "../../History_${KIND}.txt" "${FILES}/History.txt" 47cp Logo_White.icns "${FILES}/.background" 48 49if [ "$KIND" = "CLI" ]; then 50 51 cd ../GNU/CLI 52 if test -e ".libs/${APPNAME_lower}"; then 53 mv -f ".libs/${APPNAME_lower}" . 54 fi 55 if ! test -x "${APPNAME_lower}"; then 56 echo 57 echo "${APPNAME_lower} can’t be found, or this file isn’t a executable." 58 echo 59 exit 1 60 fi 61 strip -u -r "${APPNAME_lower}" 62 cd ../../Mac 63 64 mkdir -p "${FILES}-Root/usr/local/bin" 65 cp "../GNU/CLI/${APPNAME_lower}" "${FILES}-Root/usr/local/bin" 66 codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}-Root/usr/local/bin/${APPNAME_lower}" 67 68 pkgbuild --root "${FILES}-Root" --identifier "net.mediaarea.${APPNAME_lower}.mac-${KIND_lower}" --sign "Developer ID Installer: ${SIGNATURE}" --version "${VERSION}" "${FILES}/${APPNAME_lower}.pkg" 69 codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME_lower}.pkg" 70 71fi 72 73if [ "$KIND" = "GUI" ]; then 74 75 cd ../GNU/GUI 76 if test -e ".libs/${APPNAME_lower}-${KIND_lower}"; then 77 mv -f ".libs/${APPNAME_lower}-${KIND_lower}" . 78 fi 79 if ! test -x "${APPNAME_lower}-${KIND_lower}"; then 80 echo 81 echo "${APPNAME_lower}-${KIND_lower} can’t be found, or this file isn’t a executable." 82 echo 83 exit 1 84 fi 85 strip -u -r "${APPNAME_lower}-${KIND_lower}" 86 cd ../../Mac 87 88 mkdir -p "${FILES}/${APPNAME}.app/Contents/MacOS" 89 mkdir "${FILES}/${APPNAME}.app/Contents/Resources" 90 cp "../GNU/GUI/${APPNAME_lower}-${KIND_lower}" "${FILES}/${APPNAME}.app/Contents/MacOS/${APPNAME}" 91 cp Info.plist "${FILES}/${APPNAME}.app/Contents" 92 sed -i '' -e "s/VERSION/${VERSION}/g" "${FILES}/${APPNAME}.app/Contents/Info.plist" 93 echo -n 'APPL????' > "${FILES}/${APPNAME}.app/Contents/PkgInfo" 94 cp ${APPNAME}.icns "${FILES}/${APPNAME}.app/Contents/Resources" 95 96 codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME}.app/Contents/MacOS/${APPNAME}" 97 codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FILES}/${APPNAME}.app" 98 99fi 100 101echo 102echo ========== Create the disk image ========== 103echo 104 105# Check if an old image isn't already attached 106DEVICE=$(hdiutil info |grep -B 1 "/Volumes/${APPNAME}" |egrep '^/dev/' | sed 1q | awk '{print $1}') 107test -e "$DEVICE" && hdiutil detach -force "${DEVICE}" 108 109hdiutil create "${TEMPDMG}" -ov -fs HFS+ -format UDRW -volname "${APPNAME}" -srcfolder "${FILES}" 110DEVICE=$(hdiutil attach -readwrite -noverify "${TEMPDMG}" | egrep '^/dev/' | sed 1q | awk '{print $1}') 111sleep 2 112 113cd "/Volumes/${APPNAME}" 114if [ "$KIND" = "GUI" ]; then 115 ln -s /Applications 116fi 117test -e .DS_Store && rm -fr .DS_Store 118cd - >/dev/null 119 120. Osascript_${KIND}.sh 121osascript_Function 122 123hdiutil detach "${DEVICE}" 124sleep 2 125 126echo 127echo ========== Convert to compressed image ========== 128echo 129hdiutil convert "${TEMPDMG}" -format UDBZ -o "${FINALDMG}" 130 131codesign -f --deep --options=runtime -s "Developer ID Application: ${SIGNATURE}" --verbose "${FINALDMG}" 132 133unset -v APPNAME APPNAME_lower KIND KIND_lower VERSION SIGNATURE 134unset -v TEMPDMG FINALDMG FILES DEVICE 135