You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac平台使用productbuild创建含PDF许可证的pkg安装包问题

关于Mac pkg安装包中PDF格式EULA的支持问题

我之前在制作pkg安装包时也踩过类似的坑,结合自己的实践和社区里的共识,给你梳理下相关问题:

首先说支持的许可证格式

苹果的Installer.app(也就是productbuild依赖的底层安装框架)官方实际只支持RTF和HTML格式的许可证文件。虽然公开的Distribution XML参考文档没有明确写死这一点,但无数开发者的测试和实践都证明了这一点——PDF不在默认支持的列表里。

具体使用方式:

  • RTF格式:直接在distribution.xml里写 <license file="EULA.rtf" /> 就能正常渲染,字体、排版样式都能保留
  • HTML格式:可以指定mime-type确保正确解析,比如 <license file="EULA.html" mime-type="text/html" />,还能支持简单的网页样式,比如换行、加粗等

为什么你的PDF会显示成纯文本?

当你把PDF文件指定为许可证时,Installer.app根本无法解析PDF的二进制格式,它会把这个文件当作普通的纯文本文件来读取,所以才会显示一堆乱码或者原始的PDF字节内容。哪怕你手动指定了mime-type="application/pdf"也没用,因为安装框架的许可证步骤里根本没有内置PDF渲染的逻辑。

那能不能用PDF作为许可证?

直接通过<license>标签加载PDF是行不通的,但有两个间接方案可以实现类似需求:

方案1:把PDF转成HTML/RTF(最推荐)

这是成本最低、最稳妥的方法。你可以用工具把PDF内容转成格式良好的HTML或RTF:

  • 转HTML:用Adobe Acrobat或者本地的PDF编辑器导出,导出后可以微调下样式,确保在Installer的窗口里显示正常
  • 转RTF:大多数PDF工具都支持导出RTF,这种格式对传统排版的保留更好,适合正式的许可协议

方案2:自定义安装界面(进阶玩法)

如果你一定要用原生的PDF展示,只能通过自定义Installer插件来实现:

  1. 编写一个自定义的安装步骤插件(.plugin格式),在插件里用WebKit组件来加载并展示PDF
  2. 在distribution.xml里用<customize>标签替换默认的许可证步骤,调用你的自定义插件
    不过这种方法需要熟悉Mac的Installer插件开发,学习成本比较高,只适合有特殊需求的场景

补充:关于格式文档的说明

苹果公开的Distribution XML参考文档确实没有详细列出支持的许可证格式,这部分信息更多来自开发者社区的实践和苹果开发者论坛的内部回复。目前公认支持的类型是:

  • UTI:public.rtf、public.html
  • MIME类型:text/rtf、text/html

内容的提问来源于stack exchange,提问作者Borys Verebskyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:21:03