Extract .xip file into a folder from command line?
Solution 1
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, cd
ing 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?
Solution 2
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.
Solution 3
You can open archive utility itself, go into Preferences and set a specific destination folder and then double click the file. This way you achieved expanding it to a specific destination. ;-)
Solution 4
You can change the output by opening Archive Utility (either via spotlight search or launchpad). Then Archive Utility > Preferences (Command+,)
. Then Save expanded files > into... and you can change the output directory. :)
More simply: Opening "Archive Utility" and opening its preferences and changing where it can extract the file to. Also, Archive Utility can open .xip
files.
Antony Raphel
I can say that I am a responsible and a hard-working person. Moreover, being a sociable person and get to know new interesting individuals. "God grant me the serenity to accept the things I cannot change, the courage to change the things I can, and the wisdom to know the difference." -Reinhold Niebuhr
Updated on December 13, 2021Comments
-
Antony Raphel over 2 years
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?