macOS创建dmg文件的hdiutil命令
macOS创建dmg文件的hdiutil命令

macOS创建dmg文件的hdiutil命令

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/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注