In Linux system operation, many people don’t know much about DMG files, let alone how to create DMG files. This article introduces the method of using the command line to create DMG files in Linux. Friends who don’t know can learn about it.
What is a DMG file and how to open it?
DMG format is a mirror file or compressed file on the MAC system. If you use a PC and do not install Mac OS X for x86, you don’t have to work hard. If you use a Mac or have Mac OS X for x86 installed on your PC, double-click this file on the MAC system to unlock it; If you want to burn this file into a DVD, use toast to burn the file into a CD: DMG = “disc image”
Create DMG from the command line
Automatically obtain the software version number
APP_NAME=“Soulver”
VERSION=$(/usr/libexec/plistbuddy -c Print:CFBundleShortVersionString: “${APP_NAME}.app/Contents/Info.plist”)
DMG_BACKGROUND_IMG=“Background.png”
VOL_NAME=“${APP_NAME} ${VERSION}”
DMG_TMP=“${VOL_NAME}-temp.dmg”
DMG_FINAL=“${VOL_NAME}.dmg”
STAGING_DIR=“。/Install”
Create dmg
#Clean up folder
rm -rf “${STAGING_DIR}” “${DMG_TMP}” “${DMG_FINAL}”
#Create folder, copy, calculate
mkdir -p “${STAGING_DIR}”
cp -rpf “${APP_NAME}.app” “${STAGING_DIR}”
SIZE=`du -sh “${STAGING_DIR}” | sed ‘s/([0-9.]*)M(.*)/1/’`
SIZE=`echo “${SIZE} + 1.0” | bc | awk ‘{print int($1+0.5)}’`
#Fault tolerant processing
if [ $? -ne 0 ]; then
echo “Error: Cannot compute size of staging dir”
exit
fi
#Create a temporary DMG file
hdiutil create -srcfolder “${STAGING_DIR}” -volname “${VOL_NAME}” -fs HFS+
-fsargs “-c c=64,a=16,e=16” -format UDRW -size ${SIZE}M “${DMG_TMP}”
echo “Created DMG: ${DMG_TMP}”
Set dmg
DEVICE=$(hdiutil attach -readwrite -noverify “${DMG_TMP}” |
egrep ‘^/dev/’ | sed 1q | awk ‘{print $1}’)
sleep 2
#Add a soft link to the applications directory
echo “Add link to /Applications”
pushd /Volumes/“${VOL_NAME}”
ln -s /Applications
popd
#Copy background picture
mkdir /Volumes/“${VOL_NAME}”/.background
cp “${DMG_BACKGROUND_IMG}” /Volumes/“${VOL_NAME}”/.background/
#Use Applescript to set a series of window properties
echo ‘
tell application “Finder”
tell disk “’${VOL_NAME}‘”
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {400, 100, 938, 432}
set viewOptions to the icon view options of container window
set arrangement of viewOptions to not arranged
set icon size of viewOptions to 72
set background picture of viewOptions to file “.background:’${DMG_BACKGROUND_IMG}‘”
set position of item “’${APP_NAME}‘.app” of container window to {160, 195}
set position of item “Applications” of container window to {360, 195}
close
open
update without registering applications
delay 2
end tell
end tell
’ | osascript
sync
#Unload
hdiutil detach “${DEVICE}”
Compressed dmg
echo “Creating compressed image”
hdiutil convert “${DMG_TMP}” -format UDZO -imagekey zlib-level=9 -o “${DMG_FINAL}”
#Clean up folder
rm -rf “${DMG_TMP}”
rm -rf “${STAGING_DIR}”
echo ‘Done.’
exit
The above is an introduction to how Linux uses the command line to create DMG files. The above describes in detail what DMG files are, so that users can have a deeper understanding of DMG files.