Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extract .xip file into a folder from command line?

Apple occasionally uses a proprietary XIP file format, particularly when distributing versions of Xcode. It is an analog to zip, but is signed, allowing it to verified on the receiving system. When a XIP file is opened (by double-clicking), Archive Utility will expand it, but only if the digital signature is intact.

Does anyone know how to extract a XIP file from the Terminal command line to a specific folder? Is there any way to unarchive this type of file if the signature is invalid?

like image 227
Antony Raphel Avatar asked Feb 13 '17 06:02

Antony Raphel


People also ask

How extract xip file in Linux?

@rexford if you just do open -W archive. xip from terminal that will launch bomArchiveHelper and unpack the xip in the current directory and will block until the unarchive is complete. I use this to open Xcode. xip via a shell call in Jenkins all the time.

What is a Mac xip File?

An . XIP file is a XAR archive that can be digitally signed for integrity. The . XIP file format was introduced in OS X 10.9, along with Apple's release of Swift. . XIP allows for a digital signature to be applied and verified on the receiving system before the archive is expanded.


2 Answers

Maybe try:

xip -x [path to .xip file]

That will unpack the archive into your current working directory.

As for extracting into a specific directory, there is not explicitly an option for this, but xip -x will extract into the current working directory. Therefore, cding to where you would like to extract the file should work; if you specifically need to automate this, a script to the effect of:

#!/bin/sh  xipfile="$(cd $(dirname "$1"); pwd -P)/$(basename "$1")" # a portable "realpath"  cd "$2" xip -x "$xipfile" 

Should do the trick I think?

like image 167
Geoff Nixon Avatar answered Oct 11 '22 09:10

Geoff Nixon


I would recommend to simply extract the archive into the folder you want trying the following:

xar -xf file.xip -C /path/to/target 

(and/or)

tar -zxvf file.xip -C /path/to/target 

The xar and tar commands extract the .xip "Content" and "Metadata" in a raw format.

Using a pbzx stream parser you'll need to extract the "Content" which is an lzma compressed Payload; the format is similar to that found within a package installer (eg. .pkg). You can compile the pbzx source from here, or download the compiled binary and install to /usr/local/bin then invoke the pbzx command:

pbzx -n Content | cpio -i 

After the command finishes parsing the Content you should get the original form of whatever it was within the .xip archive.

Useful / Additional Info:

$ pkgutil --check-signature file.xip  

Xcode_9_beta_2.xip returns:

Package "Xcode_9_beta_2.xip":    Status: signed Apple Software    Certificate Chain:     1. Software Update        SHA1 fingerprint: 1E 34 E3 91 C6 44 37 DD 24 BE 57 B1 66 7B 2F DA 09 76 E1 FD        -----------------------------------------------------------------------------     2. Apple Software Update Certification Authority        SHA1 fingerprint: FA 02 79 0F CE 9D 93 00 89 C8 C2 51 0B BC 50 B4 85 8E 6F BF        -----------------------------------------------------------------------------     3. Apple Root CA        SHA1 fingerprint: 61 1E 5B 66 2C 59 3A 08 FF 58 D1 4A E2 24 52 D1 98 DF 6C 60 

Notes:

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.

↳ OS X manual page : xip

like image 37
l'L'l Avatar answered Oct 11 '22 11:10

l'L'l