【发布时间】:2017-03-17 19:31:37
【问题描述】:
我搜索了如何使用命令行提取 XIP 存档但没有运气,所以我将自己的解决方案作为bash 函数留在这里。
我找到了灵感here。
【问题讨论】:
-
已经回答了这两个问题:我也赞成将其作为欺骗删除。我已经清理了另一个问题,并认为它应该足够了。
标签: xcode macos xcode8 osx-elcapitan macos-sierra
我搜索了如何使用命令行提取 XIP 存档但没有运气,所以我将自己的解决方案作为bash 函数留在这里。
我找到了灵感here。
【问题讨论】:
标签: xcode macos xcode8 osx-elcapitan macos-sierra
在 macOS Mojave 上(不确定其他操作系统版本),导航到您想要展开内容的目录,然后运行 xip --expand /path/to/xip.xip。例如:
iMac:Applications jeff$ xip --expand /Users/jeff/Downloads/Xcode_11_Beta.xip
【讨论】:
【讨论】:
Expanding items from “Xcode_12.5.1.xip”: 99% 上停留了很长时间。我要放弃吗? (那个 xip 有什么问题?没有工具可以提取它...)
你可以试试:
xip -x [path to .xip file]
【讨论】:
open -W archive.xip 会更好地工作,因为它会阻塞直到存档完成打开。
【讨论】:
你可以运行:
open archive.xip
【讨论】:
function unxip()
{
[ -z "$1" ] && echo "usage: unxip /path/to/archive.xip" && return
# http://newosxbook.com/src.jl?tree=listings&file=pbzx.c
PBZX="/usr/local/src/pbzx/pbzx" && [ ! -x "$PBZX" ] && echo "$PBZX not found." && return
[ ! -f "$1" ] && echo "$1 not found." && return
[ -f "Content" ] || [ -f "Metadata" ] && echo "Content or Metadata already exists." && return
pkgutil --check-signature "$1" && xar -xf "$1" && "$PBZX" Content | sudo tar x --strip-components=1
rm "Content" "Metadata"
}
我们首先检查xip 文件签名,然后使用xar 提取其内容。然后,我们使用 Jonathan Levin pbzx 正确解压缩 pbzx 块并将输出通过管道传输到 tar,跳过 . 以避免覆盖当前工作目录权限。
这可以在 OS X El Capitan 上解压 Xcode8.xip 档案。
【讨论】:
open -W archive.xip,它将启动 bomArchiveHelper 并解压缩当前目录中的 xip 并在解压缩完成之前一直阻塞。我一直使用它通过 Jenkins 中的 shell 调用打开 Xcode.xip。 -W 标志告诉 shell 在继续之前等待被调用的应用程序退出。
brew install thii/unxip/unxip 也可以正确解开 Xcode 档案,这与 Apple 工具不同。 (但它需要从源代码编译pbzx 工具,还需要构建一个自定义库......)