Xcode 如何使用命令行提取xip归档文件?
我搜索了如何使用命令行提取XIP归档文件,但运气不好,所以我在这里留下了自己的解决方案,作为Xcode 如何使用命令行提取xip归档文件?,xcode,macos,xcode8,osx-elcapitan,macos-sierra,Xcode,Macos,Xcode8,Osx Elcapitan,Macos Sierra,我搜索了如何使用命令行提取XIP归档文件,但运气不好,所以我在这里留下了自己的解决方案,作为bash函数 我找到了灵感。函数unxip() { [-z“$1”]&&echo“用法: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未找到”。&&re
bash
函数
我找到了灵感。函数unxip()
{
[-z“$1”]&&echo“用法: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未找到”。&&return
[!-f“$1”]&回显“$1未找到”。&返回
[-f“内容”]|【-f“元数据”]&&echo“内容或元数据已存在。”&&return
pkgutil--检查签名“$1”和&xar-xf“$1”和“$PBZX”内容| sudo tar x--条带组件=1
rm“内容”“元数据”
}
我们首先检查xip
文件签名,然后使用xar
提取其内容。然后,我们使用Jonathan Levin正确地解压pbzx
块,并将输出传输到tar
,跳过
,以避免覆盖当前的工作目录权限
这是在OS X El Capitan上解包Xcode8.xip
存档的诀窍。您可以运行:
open archive.xip
open-W archive.xip将工作得更好,因为它会一直阻塞,直到归档文件打开完毕。您可以尝试:
xip-x[指向.xip文件的路径]
使用。您可以使用自制软件安装它:
brew install thii/unxip/unxip
要提取.xip
文件:
unxip path/to/.xip
在macOS Mojave上(不确定其他操作系统版本),导航到要展开内容的目录,然后运行xip--expand/path/to/xip.xip
。例如:
iMac:Applications jeff$ xip --expand /Users/jeff/Downloads/Xcode_11_Beta.xip
从CI的角度来看,这是不可取的,因为当使用本机工具(/System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility)时,需要安装第三方应用程序安装在系统上的已执行此工作。@ablarg从CI的角度来看:如何将存档实用程序切实集成到shell脚本中以实现自动化?可以用脚本吗?或者您想过双击XIP存档吗?@rexford,如果您只需从终端启动bomArchiveHelper并在当前目录中解压XIP并将阻止,直到解压完成。我一直使用它通过Jenkins中的shell调用打开Xcode.xip。-W标志告诉shell在继续之前等待调用的应用程序退出。向上投票,但请参阅下面更简单的解决方案:brew安装thii/unxip/unxip
也正确地解压Xcode归档,与Apple工具不同。(但它需要从源代码处编译pbzx
工具,还需要构建一个自定义库……)我刚刚检查过,在macOS High Sierra(10.13.6)中,这个命令也可以工作,但奇怪的是,“man xip”中没有提到。我遇到了一些身份验证问题,从developer.apple.com重新下载该文件可以清除它。解压XCode 10.1无法使用Unarchiver。。。但这成功了,谢谢!