XAR(可扩展存档)是一种由 Apple Inc. 开发的文件格式,用于在 macOS 上捆绑和分发软件。它替代了 .pkg 和 .dmg 等较旧格式,提供了多项优势,例如提高安全性、减小文件大小和提升性能。XAR 文件使用 .xar 文件扩展名,可以使用 macOS 附带的 xar 命令行实用工具创建和提取。
XAR 格式基于 XML(可扩展标记语言)标准。XAR 存档包含三个主要组件:以 XML 格式描述存档内容的目录 (TOC)、存储在存档中的实际文件和目录,以及用于安全的数字签名。TOC 充当索引,指定存档中每个文件的路径、大小和其他元数据。这种基于 XML 的结构允许扩展,因为 Apple 或第三方可以添加自定义标记来支持新功能。
XAR 格式的一个关键方面是它使用压缩。默认情况下,XAR 使用 zlib 压缩来减小已存档文件的大小。TOC 本身也已压缩。与存储未压缩文件的 .pkg 等较旧格式相比,这会导致较小的存档大小。但是,XAR 也支持在需要时存储未压缩的文件。可以单独在 TOC 中指定应用于每个文件的压缩。
为了确保 XAR 存档的完整性和真实性,该格式包含数字签名。每个 XAR 文件都包含一个或多个涵盖整个 TOC 的签名。这些签名是使用公钥密码术创建的,通常使用 RSA 或 DSA 算法。这些签名允许接收者验证存档未被篡改,并且它来自受信任的来源。Apple 使用 XAR 签名在 Mac App Store 上分发软件更新和应用程序。
当打开 XAR 存档时,首先会解压缩并解析 TOC。TOC 提供目录结构和文件元数据,类似于 Unix 系统上使用的“tar”格式。实际文件数据存储在存档中的 TOC 之后。每个文件的数据可以压缩或解压缩,如 TOC 中的相应条目所示。要提取文件,可以使用 TOC 中的偏移量和大小信息找到其数据。
XAR 格式支持除基本存档之外的几个高级功能。其中一项功能是能够在单个存档中包含多个 TOC。这允许创建增量更新,其中只需要将更改的文件包含在更新存档中。多个 TOC 可以描述软件不同版本中的存档状态。智能更新机制可以使用此信息有效地应用增量补丁。