hdiutil 是 macOS 上用于创建、转换、验证、挂载、烧录 .dmg(磁盘映像)文件的终端命令行工具。它是打包 macOS 应用时封装 .app 为 .dmg 的关键工具。
如果想要了解完整的封装dmg安装包过程,请见《macOS封装dmg安装包》一文。
常用命令
将 .app 封装成 .dmg 文件:
hdiutil create -volname "你的应用名" \
-srcfolder "/路径/到/文件夹" \
-ov -format UDZO \
"/保存/到/的路径/你的应用.dmg"
参数详解:
-volname:.dmg 显示出来的磁盘名称。

-srcfolder:需要打包的文件夹(通常包含 .app 和 /Applications 链接)。
-ov:覆盖已有的 .dmg(overwrite)。
-format:.dmg 文件格式,常用 UDZO(压缩)。
最后参数:生成后的 .dmg 文件路径。
示例代码:
hdiutil create -volname "ImagesSlim" \
-srcfolder ~/Desktop/ImagesSlim \
-ov -format UDZO \
~/Desktop/ImagesSlim.dmg
这段代码表示:
创建的 .dmg 文件名称为“ImagesSlim”。
打包的临时文件夹的路径为“~/Desktop/ImagesSlim”。
覆盖已有的 .dmg文件,文件格式为UDZO。
生成的 .dmg 文件保存到“~/Desktop/ImagesSlim.dmg”。
常见格式
1、UDRW:读写镜像,可修改内容。
2、UDRO:只读镜像,不可修改。
3、UDCO:压缩镜像,体积更小,安装器常用。
4、UDZO:压缩只读(Zlib),常用格式,适合发布。
5、UDBZ:Bzip2 压缩镜像,更高压缩率,速度慢。
6、UDSP:可稀疏镜像,动态扩容,开发调试用。
7、UDTO:DVD/CD ISO 镜像,可用于刻录光盘(几乎不用了)。
最小完整命令
hdiutil create -volname "ImageSlim" \
-srcfolder ~/Desktop/ImageSlim_DMG \
-ov -format UDZO \
~/Desktop/ImageSlim.dmg
自动流程脚本(.sh文件)
创建脚步文件,如dmg.sh文件并添加执行权限:
touch ~/Desktop/dmg.sh
chmod +x dmg.sh
编辑dmg.sh 文件内容为:
#!/bin/bash
APP_NAME="ImageSlim" # app名称
DMG_NAME="$APP_NAME.dmg" # dmg文件名称
VOL_NAME="$APP_NAME" # dmg 文件显示的磁盘名称
SRC_DIR=~/Desktop/${APP_NAME}_DMG # 源目录(临时文件夹)的名称,如ImagesSlim_DMG
APP_PATH=~/Desktop/${APP_NAME}.app # 桌面上的 .app 文件
DEST_DMG=~/Desktop/$DMG_NAME # 导出的 .dmg 文件路径
# 清理旧数据
rm -rf "$SRC_DIR" # 清理源目录(临时文件夹)
mkdir -p "$SRC_DIR" # 创建源目录(临时文件夹)
# 拷贝 App 和符号链接
cp -R "$APP_PATH" "$SRC_DIR/" # 将桌面上的 .app 文件复制到源目录(临时文件夹)
ln -s /Applications "$SRC_DIR/" # 将 Applications 的快捷方式复制到源目录(临时文件夹)中
# 生成 DMG
hdiutil create -volname "$VOL_NAME" \
-srcfolder "$SRC_DIR" \
-ov -format UDZO "$DEST_DMG"
# 上面生成 DMG 的代码内容为:
# 设置 dmg 磁盘名称
# 设置源目录(临时文件夹)
# 覆盖已存在的 .dmg 文件,设置UDZO压缩格式,设置导出 .dmg 文件路径
# 清理
rm -rf "$SRC_DIR" # 清理源目录(临时文件夹)
echo "生成成功:$DEST_DMG"
这段代码,要求 .app 文件的路径为“桌面”,并且 .app 文件的名称为ImageSlim。如果不一致,需要修改 .sh 文件中的参数名称。

编辑 .sh 文件后,在终端中运行该 .sh 文件:
./dmg.sh
运行后,终端创建 .dmg 文件。

完成 .dmg 文件的创建。

其他命令
检查 .dmg 文件信息:
hdiutil imageinfo ImageSlim.dmg
挂载 .dmg 文件:
hdiutil attach ImageSlim.dmg
卸载 .dmg 文件:
hdiutil detach /Volumes/卷名
进阶使用(如加密 .dmg):
hdiutil create -encryption -stdinpass -volname "SecureApp" \
-srcfolder ~/Desktop/MyApp_DMG \
-ov -format UDZO \
~/Desktop/SecureApp.dmg
在终端中,使用该命令后,会弹出“Enter disk image passphrase”的提示:

然后生成 .dmg 文件。
双击打开 .dmg 文件时,会要求输入密码,只有密码输入正确后,才能正确的挂载 .dmg 文件。

相关文章
macOS封装dmg安装包:https://fangjunyu.com/2025/06/21/macos%e5%b0%81%e8%a3%85dmg%e5%ae%89%e8%a3%85%e5%8c%85/