原文地址:

什么是DMG文件,如何打开?

DMG格式是在MAC系统上的一个镜像文件,也可以说是压缩文件,如果你用PC且没有装MAC OS X for X86的话,就不要费力了。如果你是使用苹果机或在PC上装了MAC OS X for X86,在MAC系统上双击这个文件就可以解开了;如果想把这个文件烧录成DVD,用toast把文件烧成光盘即可:dmg=》disc image

命令行创建dmg

自动获取软件版本号

    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”
  创建dmg
  # 清理文件夹
  rm -rf “${STAGING_DIR}” “${DMG_TMP}” “${DMG_FINAL}”
  # 创建文件夹,拷贝,计算
  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)}’`
  # 容错处理
  if [ $? -ne 0 ]; then
  echo “Error: Cannot compute size of staging dir”
  exit
  fi
  # 创建临时dmg文件
  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}”
  设置dmg
  DEVICE=$(hdiutil attach -readwrite -noverify “${DMG_TMP}” |
  egrep ‘^/dev/’ | sed 1q | awk ‘{print $1}’)
  sleep 2 
  # 增加Applications目录的软链接
  echo “Add link to /Applications”
  pushd /Volumes/“${VOL_NAME}”
  ln -s /Applications
  popd
  # 拷贝背景图片
  mkdir /Volumes/“${VOL_NAME}”/.background
  cp “${DMG_BACKGROUND_IMG}” /Volumes/“${VOL_NAME}”/.background/
  # 使用applescript设置一系列的窗口属性
  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
  # 卸载
  hdiutil detach “${DEVICE}”
  压缩dmg
  echo “Creating compressed image”
  hdiutil convert “${DMG_TMP}” -format UDZO -imagekey zlib-level=9 -o “${DMG_FINAL}”
  # 清理文件夹
  rm -rf “${DMG_TMP}”
  rm -rf “${STAGING_DIR}”
  echo ‘Done.’
  exit

上面就是Linux使用命令行创建dmg文件的方法介绍了,上文对什么是dmg文件做了详细介绍,让用户对dmg文件有更深入的认识。