Mist安装包制作指南:PKG与DMG分发格式全攻略
你还在为macOS应用分发格式选择发愁?本文将系统讲解Mist工具制作PKG与DMG安装包的完整流程,从环境配置到签名发布,让普通用户也能轻松掌握专业分发方案。读完你将获得:两种主流安装包格式的制作方法、自动化构建配置技巧、常见问题解决方案。
准备工作
Mist作为macOS安装包制作工具,需要以下环境支持:
- 硬件:Intel或Apple Silicon架构的Mac
- 系统:macOS Monterey 12.0及以上
- 依赖工具:Xcode 15.0+(含Command Line Tools)
项目核心配置文件位于根目录:
- PKG制作配方:Mist.pkg.recipe.yaml
- DMG制作配方:Mist.dmg.recipe.yaml
- 卸载脚本:Scripts/uninstall.sh
PKG格式制作流程
配置解析
PKG制作主要通过yaml配方文件定义流程,核心步骤包括:
- 代码签名验证(CodeSignatureVerifier)
- 版本信息提取(Versioner)
- payload目录创建(PkgRootCreator)
- 应用文件复制(Copier)
- 安装包构建(PkgCreator)
- 签名与输出(PkgSigner、FileMover)
关键配置示例(来自Mist.pkg.recipe.yaml第28-37行):
- Processor: PkgCreator
Arguments:
pkg_request:
id: "%IDENTIFIER%"
version: "%version%"
pkgtype: flat
pkgroot: "%RECIPE_CACHE_DIR%/payload"
pkgdir: "%RECIPE_CACHE_DIR%"
pkgname: "%NAME%-%version%"
制作步骤
-
环境准备
# 安装Xcode命令行工具 xcode-select --install -
执行构建
# 使用autopkg执行配方(需提前安装autopkg) autopkg run Mist.pkg.recipe.yaml -
签名配置 配方中已集成签名步骤(第46-49行),需配置开发者证书:
- Processor: com.github.rtrouton.SharedProcessors/PkgSigner Arguments: pkg_path: "%RECIPE_CACHE_DIR%/%NAME%-%version%.pkg" signing_cert: "%DEVELOPER_ID_INSTALLER%"
DMG格式制作流程
配置解析
DMG制作流程相对简洁(Mist.dmg.recipe.yaml),核心处理器为DmgCreator:
- Processor: DmgCreator
Arguments:
dmg_root: "%pathname%"
dmg_path: "%DESTINATION_DIR%/%NAME% %version%.dmg"
制作步骤
-
基础构建
autopkg run Mist.dmg.recipe.yaml -
自定义优化
- 添加背景图片:需在dmg_root目录放置
.background文件夹 - 配置窗口大小:通过PlistBuddy修改DS_Store文件
- 添加快捷方式:创建Applications文件夹替身
- 添加背景图片:需在dmg_root目录放置
两种格式对比
| 特性 | PKG格式 | DMG格式 |
|---|---|---|
| 安装位置 | 系统控制(通常/Applications) | 用户自选 |
| 权限要求 | 需要管理员权限 | 无需特殊权限 |
| 更新支持 | 支持组件更新 | 完整替换 |
| 卸载能力 | 需配合卸载脚本 | 简单删除 |
| 适用场景 | 企业部署、系统工具 | 消费者应用、演示版 |
签名与分发
签名要求
无论是PKG还是DMG,都需要使用Apple开发者证书签名:
- PKG:使用Developer ID Installer证书
- DMG:使用Developer ID Application证书
分发渠道
-
本地分发
- PKG文件:直接双击安装
- DMG文件:挂载后拖拽应用到Applications文件夹
-
企业部署
- 可通过MDM解决方案推送PKG
- 配置自定义Software Update Catalogs(支持Big Sur及以上)
卸载与维护
Mist提供完整的卸载脚本Scripts/uninstall.sh,支持清理:
- 应用主程序(/Applications/Mist.app)
- 辅助工具(/Library/PrivilegedHelperTools/)
- 启动项(/Library/LaunchDaemons/)
执行卸载:
sudo bash Scripts/uninstall.sh
常见问题解决
签名失败
症状:PkgSigner步骤提示"找不到证书" 解决:
- 检查钥匙串中是否安装对应证书
- 验证环境变量
DEVELOPER_ID_INSTALLER配置 - 确保证书包含私钥
构建缓存问题
解决:清理autopkg缓存
rm -rf ~/Library/AutoPkg/Cache/com.ninxsoft.pkg.mist
权限错误
总结
通过Mist提供的yaml配方文件,可轻松实现PKG与DMG两种主流分发格式的制作。PKG适合企业级部署,DMG更适合普通用户分发。实际应用中可根据需求选择合适格式,或两种格式同时提供。
项目完整文档参见README.md,更多高级配置可探索:
- 自定义Catalogs配置
- 缓存机制优化
- 多版本兼容性处理
建议收藏本文档,关注项目更新以获取最新制作技巧。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



