2016-11-04 946 views

回答

1
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档案。

+0

从CI的角度来看,这是不可取的,因为当系统上已安装本地工具(/ System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility)时,它需要安装第三方应用程序执行工作。 – ablarg

1

你可以只运行:

open archive.xip 
2

open -W archive.xip将更好地工作,因为它会再阻塞,直到归档完成开放。