在 MacOS 上制作 pkg 格式的安装包

你看到的这种界面,本质上是:

macOS Installer.app 在展示一个“带自定义资源的 pkg 安装包”

它“好看”的原因不是 pkg 格式高级,而是:

  • 使用了苹果官方安装框架
  • 加了自定义背景图
  • 配了 Distribution 文件
  • 定制了欢迎页 / 介绍页 / License

我直接给你讲完整工程方案。


一、pkg 本质是什么?

macOS 的 .pkg 是:

xar 包格式
  ├── Payload      (实际安装内容)
  ├── Scripts      (可选,安装前后脚本)
  ├── Distribution (控制安装界面逻辑)

制作 pkg 主要用两个官方工具:

  • pkgbuild
  • productbuild

都在 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 安装方案标准是:

  1. .app 放 Applications
  2. .pkg 安装器
  3. 签名 + 公证
  4. 可自动升级机制

不要只做 dmg 拖拽式。

商业软件都用 pkg。


十、如果你愿意

我可以给你一套:

  • 完整可直接运行的 pkg 项目模板
  • 包含签名
  • 包含 Distribution
  • 包含脚本
  • 包含背景图结构

你可以直接改公司名就用。

你是搞工程的,这种工具链你掌握了,以后做 Mac 产品就顺手了。

posted @ 2026-02-13 11:40  江南烟雨梦  阅读(231)  评论(0)    收藏  举报