从命令行将 .xip 文件提取到文件夹中?

Extract .xip file into a folder from command line?

Apple 偶尔会使用专有的 XIP 文件格式,尤其是在分发 Xcode 版本时。它类似于 zip,但经过签名,可以在接收系统上进行验证。当 XIP 文件打开(通过双击)时,Archive Utility 将展开它,但前提是数字签名完好无损。

有谁知道如何从终端命令行将 XIP 文件提取到特定文件夹?如果签名无效,有什么办法可以取消存档这种类型的文件吗?

我建议您将存档解压到您想要尝试以下操作的文件夹中:

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

(and/or)

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

xartar 命令以原始格式提取 .xip“内容”和“元数据”。

使用 pbzx 流解析器,您需要提取“内容”,这是一个 lzma 压缩的有效负载;格式类似于软件包安装程序中的格式(例如 .pkg)。您可以 compile the pbzx source from here, or download the compiled binary 并安装到 /usr/local/bin 然后调用 pbzx 命令:

pbzx -n Content | cpio -i

命令完成对内容的解析后,您应该得到 .xip 存档中任何内容的原始形式。

有用/附加信息

$ 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

备注:

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

到目前为止,似乎没有单一的工具可以做到这一点。需要一个可以解码 pbzx 流的工具,而 macOS 上似乎没有预装该工具。

在这些答案中找到了各种解决方案:

您可以打开归档实用程序本身,进入首选项并设置特定的目标文件夹,然后双击该文件。通过这种方式,您可以将其扩展到特定目的地。 ;-)

也许试试:

xip -x [path to .xip file]

这会将存档解压缩到您当前的工作目录中。

至于解压到特定目录,没有明确的选项,但 xip -x 会解压到当前工作目录。因此,cding 到您想要提取文件的位置应该可以;如果您特别需要自动执行此操作,则脚本的效果为:

#!/bin/sh

xipfile="$(cd $(dirname ""); pwd -P)/$(basename "")" # a portable "realpath"

cd ""
xip -x "$xipfile"

我认为应该这样做吗?

您可以通过打开存档实用程序(通过 Spotlight 搜索或启动板)来更改输出。然后 A​​rchive Utility > Preferences (Command+,)。然后 Save expanded files > into... 然后您可以更改输出目录。 :)

更简单:打开“存档实用程序”并打开其首选项并更改将文件解压缩到的位置。此外,存档实用程序 可以 打开 .xip 个文件。

(对于具有有效签名的存档。)

从目标文件夹中,为 .xip 存档创建符号 link,然后使用 link 展开(完成后删除 link)。示例:

cd /Applications
ln -s /Volumes/SomewhereElse/Xcode.xip
xip --expand Xcode.xip
rm Xcode.xip