2016-11-04 3 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, пропустив ., чтобы избежать перезаписывания текущих разрешений рабочего каталога.

Это делает трюк для распаковки Xcode8.xip архивов на OS X El Capitan.

+0

Это нежелательно с точки зрения CI, так как для установки стороннего приложения требуется установка встроенных инструментов (/ System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility), установленных в системе выполнить работу. – ablarg

1

Вы можете просто запустить:

open archive.xip 
2

open -W archive.xip будет работать лучше, так как он будет блокироваться, пока архив не закончил открытие.