在 MacOS 上制作 pkg 格式的安装包
你看到的这种界面,本质上是:
macOS Installer.app 在展示一个“带自定义资源的 pkg 安装包”
它“好看”的原因不是 pkg 格式高级,而是:
- 使用了苹果官方安装框架
- 加了自定义背景图
- 配了 Distribution 文件
- 定制了欢迎页 / 介绍页 / License
我直接给你讲完整工程方案。
一、pkg 本质是什么?
macOS 的 .pkg 是:
xar 包格式
├── Payload (实际安装内容)
├── Scripts (可选,安装前后脚本)
├── Distribution (控制安装界面逻辑)
制作 pkg 主要用两个官方工具:
pkgbuildproductbuild
都在 macOS 自带的命令行工具里。
二、做一个基础 pkg(最简单版本)
假设你要安装:
MyApp.app
1️⃣ 准备安装目录结构
mkdir -p pkgroot/Applications
cp -R MyApp.app pkgroot/Applications/
2️⃣ 构建 component pkg
pkgbuild \
--root pkgroot \
--identifier com.yourcompany.myapp \
--version 1.0 \
--install-location / \
myapp.pkg
这时候已经能安装了。
但很丑。
三、做“好看”的安装界面(关键)
你看到的 ToDesk 那种:
- 左侧步骤导航
- 中间大背景图
- 自定义欢迎文案
- License 页面
- 安装前说明
这些都是通过:
productbuild + Distribution XML + resources 目录
实现的。
四、制作高级 UI 版本 pkg
1️⃣ 准备目录结构
project/
├── component.pkg
├── distribution.xml
└── resources/
├── background.png
├── welcome.html
├── license.html
2️⃣ 生成 component.pkg
pkgbuild \
--root pkgroot \
--identifier com.yourcompany.myapp \
--version 1.0 \
component.pkg
3️⃣ 写 Distribution 文件
示例 distribution.xml:
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<title>MyApp Installer</title>
<background file="background.png" alignment="center"/>
<welcome file="welcome.html"/>
<license file="license.html"/>
<pkg-ref id="com.yourcompany.myapp"/>
<choices-outline>
<line choice="default">
<line choice="com.yourcompany.myapp"/>
</line>
</choices-outline>
<choice id="default"/>
<choice id="com.yourcompany.myapp" visible="false">
<pkg-ref id="com.yourcompany.myapp"/>
</choice>
<pkg-ref id="com.yourcompany.myapp" version="1.0">
component.pkg
</pkg-ref>
</installer-gui-script>
4️⃣ 打包成最终 pkg
productbuild \
--distribution distribution.xml \
--resources resources \
--package-path . \
MyApp-Installer.pkg
打开后就是你看到的那种“漂亮界面”。
五、好看的关键点
🎨 1. 背景图
尺寸建议:
1227 × 600 px
放在 resources/background.png
🧾 2. 欢迎页
用 HTML 写:
<h1>欢迎使用 MyApp</h1>
<p>本安装程序将把软件安装到您的 Mac 中。</p>
可以加 CSS,美观度全靠这里。
📜 3. License 页面
也是 HTML。
六、更专业的做法
如果你想做到“商业级”:
1️⃣ 代码签名
productbuild \
--sign "Developer ID Installer: Your Name" \
...
否则用户会看到:
来自未知开发者
2️⃣ Notarization(苹果公证)
否则 macOS 会拦截。
七、更简单的方法(如果你懒)
很多公司用:
🎯 Packages(图形界面工具)
一个开源 GUI 工具:
- 叫 “Packages”
- 可以拖拽生成 pkg
- 可视化编辑 Distribution
- 直接加背景
适合不想手写 XML 的人。
八、真正核心
你觉得“好看”,本质是:
安装器是苹果系统原生 UI
而不是 pkg 做得好看。
.pkg 只是载体。
九、前瞻性建议
如果你未来做 VPN、游戏客户端、商业软件,
macOS 安装方案标准是:
.app放 Applications.pkg安装器- 签名 + 公证
- 可自动升级机制
不要只做 dmg 拖拽式。
商业软件都用 pkg。
十、如果你愿意
我可以给你一套:
- 完整可直接运行的 pkg 项目模板
- 包含签名
- 包含 Distribution
- 包含脚本
- 包含背景图结构
你可以直接改公司名就用。
你是搞工程的,这种工具链你掌握了,以后做 Mac 产品就顺手了。

浙公网安备 33010602011771号