diff options
Diffstat (limited to 'packaging/mac-osx/dmg-generator/make-diskimage.sh')
-rwxr-xr-x | packaging/mac-osx/dmg-generator/make-diskimage.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/packaging/mac-osx/dmg-generator/make-diskimage.sh b/packaging/mac-osx/dmg-generator/make-diskimage.sh new file mode 100755 index 0000000..062992b --- /dev/null +++ b/packaging/mac-osx/dmg-generator/make-diskimage.sh @@ -0,0 +1,78 @@ +# Create a read-only disk image of the contents of a folder +# +# Usage: make-diskimage <image_file> +# <src_folder> +# <volume_name> +# <applescript> +# <artpath> +# <eula_resource_file> + +set -e; + +DMG_DIRNAME=`dirname $1` +DMG_DIR=`cd $DMG_DIRNAME > /dev/null; pwd` +DMG_NAME=`basename $1` +DMG_TEMP_NAME=${DMG_DIR}/rw.${DMG_NAME} +SRC_FOLDER=`cd $2 > /dev/null; pwd` +VOLUME_NAME=$3 + +# optional arguments +APPLESCRIPT=$4 +ART_PATH=$5 +EULA_RSRC=$6 + +# Create the image +echo "Creating disk image..." +rm -f "${DMG_TEMP_NAME}" +hdiutil create -srcfolder "${SRC_FOLDER}" -volname "${VOLUME_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW "${DMG_TEMP_NAME}" + +# mount it +echo "Mounting disk image..." +MOUNT_DIR="/Volumes/${VOLUME_NAME}" +DEV_NAME=`hdiutil attach -readwrite -noverify -noautoopen "${DMG_TEMP_NAME}" | egrep '^/dev/' | sed 1q | awk '{print $1}'` + +cp RightDS_Store "/Volumes/${VOLUME_NAME}/.DS_Store" + +# run applescript +if [ ! -z "${APPLESCRIPT}" -a "${APPLESCRIPT}" != "-null-" ]; then +# osascript "${APPLESCRIPT}" + # pass the applescript our volume name and our artwork path, to its process_disk_image function + echo "Running Applescript: ./AdiumApplescriptRunner \"${APPLESCRIPT}\" process_disk_image \"${VOLUME_NAME}\"" + ./AdiumApplescriptRunner "${APPLESCRIPT}" process_disk_image "${VOLUME_NAME}" "${ART_PATH}" || true + echo "Done running the applescript..." +fi + + +# run shell script +# if [ ! -z "${SHELLSCRIPT}" -a "${SHELLSCRIPT}" != "-null-" ]; then +# ./${SHELLSCRIPT} \"${VOLUME_NAME}\" +# fi + +# make sure it's not world writeable +echo "Fixing permissions..." +chmod -Rf go-w "${MOUNT_DIR}" || true + +# make the top window open itself on mount: +if [ -x /usr/local/bin/openUp ]; then + /usr/local/bin/openUp "${MOUNT_DIR}" +fi + +# unmount +echo "Unmounting disk image..." +hdiutil detach "${DEV_NAME}" + +# compress image +echo "Compressing disk image..." +hdiutil convert "${DMG_TEMP_NAME}" -format UDBZ -o "${DMG_DIR}/${DMG_NAME}" +rm -f "${DMG_TEMP_NAME}" + +# adding EULA resources +if [ ! -z "${EULA_RSRC}" -a "${EULA_RSRC}" != "-null-" ]; then + echo "adding EULA resources" + hdiutil unflatten "${DMG_DIR}/${DMG_NAME}" + /Developer/Tools/ResMerger -a "${EULA_RSRC}" -o "${DMG_DIR}/${DMG_NAME}" + hdiutil flatten "${DMG_DIR}/${DMG_NAME}" +fi + +echo "Disk image done" +exit 0 |