Apple - What is the format of a .xip file

According to the xip manual page:

A XIP file is an analog to zip(1), but allows for a digital signature to be applied and verified on the receiving system, before the archive is expanded. When a XIP file is opened (by double-clicking), Archive Utility will automatically expand it (but only if the digital signature is intact).

Essentially, an .xip file is just a .zip with a signature to verify that the file has not changed since its creator saved it. This protects from both damage from a disk error and from a third-party tampering with the file.


The .xip file format contains an archive (xar containing a gzip archive and metadata) and a signature of the archive.

To decode an .xip file, use the following commands:

pkgutil --check-signature <xip-file>
xar -xf <xip-file>
tar -zxvf <xar-file>

See the following links where developers discuss this format and its implications:

  • Sparkle issue #821 - Add xip support for signed, compressed, application updates
  • “End-of-central-directory signature not found.” when installing Xcode 8 beta xip file
  • TheUnarchiver source code: "Kludge support for XIP files to XAR parser"

Not for Public Use

Apple has since removed xip from public use. The format has been reserved for Apple's exclusive use in the future, see TN2206:

Important: Starting with macOS Sierra, only XIP archives signed by Apple will be expanded. Developers who have been using XIP archives will need to move to using signed installer packages or disk images.


To my knowledge xip is a xar derivative using gzip compression, with a toc header xml containing checksum, timestamp, certificates, user id/name, creation/modification/access date&time etc.

Tags:

Xcode