Finder の「圧縮」メニュー項目と同じ形式の zip ファイルを作成するにはどうすればよいですか?
-
01-07-2019 - |
質問
Mac OS X では、Finder からいくつかのファイルを選択し、コンテキスト メニューまたは [ファイル] メニューから [圧縮] を選択することで、zip アーカイブを作成できます。残念ながら、結果のファイルは、によって作成されたアーカイブと同一ではありません。 zip
コマンド (デフォルトのオプションを使用)。
この区別は、Apple が運営する少なくとも 1 つのサービスにとって重要であり、そのサービスは、 zip
指示。アーカイブを手動で作成する必要があるため、リリース ビルド プロセスを完全に自動化することができません。
シェル スクリプト内で正しい形式の zip アーカイブを作成するにはどうすればよいですか?
編集:ずっと前にこの質問を書いて以来、私は次のことを理解しました。 ditto
そして zip
シンボリックリンクの処理方法は次のとおりです。アプリバンドル内のコード署名にはシンボリックリンクが含まれているため、通常のファイルとして保存するのではなく、リンクとして保存する必要があります。 ditto
これはデフォルトで行われますが、 zip
しません(オプション -y
が必要です)。
解決
同様のコマンドライン ツールを次のように使用します。
ditto -ck --rsrc --sequesterRsrc folder file.zip
を参照してください。 マニュアルページも同様 多くのための。
他のヒント
iPhone App Store ビルドを作成する Ruby スクリプトがありますが、生成された zip は iTunes Connect によって受け入れられません。Finderの「圧縮」機能を使えば受け入れられました。
millenomi の答えは私にとっては近いものでしたが、このコマンドが最終的に機能したものです。iTunes Connect は私のビルドを受け入れ、アプリも承認され、問題なくダウンロードできるため、テストされました。
ditto -c -k --sequesterRsrc --keepParent AppName.app AppName.zip
男性も同様に次のように述べています。
The command: ditto -c -k --sequesterRsrc --keepParent src_directory archive.zip will create a PKZip archive similarly to the Finder's Compress functionality.
注意 --keepParent
ヒントは「自動化」タグにあります。
Automator.app で「アーカイブの作成」アクションを使用するアクションを作成し、コマンドラインから呼び出します (「aumater」を参照)。