Information
日記
G-ZONEのメインコンテンツとは関係のない日々を綴ったX-Virusの日記です。メインコンテンツが更新されていない時、X-Virus が何をしているか、ここを読んでもらえれば分かるように・・・というより、自分が何をしようと目論んでいるかといった備忘録として使う予定です。
Macで作成したZIPファイルをWindowsで開けない理由 2008-09-10
Macで作成したZIPファイルが、全くWindowsで開けない訳ではありません。フォルダを圧縮した時にWindowsで開けなくなることがあるのです。
Macで圧縮したZIPファイルの中身を見てみると、/で終わるフォルダがリストされることに気がつきます。テストで作成したZIPの中身をコンソールからZIPコマンドで確認してみると・・・
zip -v folder.zip (←これだけ打ち込む)
(結果表示)
zip info: local extra (16 bytes) != central extra (12 bytes): folder/
zip info: local extra (16 bytes) != central extra (12 bytes): folder/.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/folder/
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/folder/._.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): folder/file1
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/folder/folder/
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/folder/folder/._.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/file2
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/file3
/で終わるフォルダがZIPファイルの中にあるとWindowsでは、フォルダが生成される代わりにファイルが生成されてしまい肝心のフォルダが生成できなくなってしまうのです。
そこでその解消方法を備忘録的にメモしておくことにします。
上記の例の場合、コンソールから次のようにコマンドを打ち込みます。
zip -d folder.zip folder/
zip -d folder.zip __MACOSX/
zip -d folder.zip __MACOSX/folder/
zip -d folder.zip folder/folder/
zip -d folder.zip __MACOSX/folder/folder/
・・・といった具合に/で終わるファイル(フォルダ)を削除してしまいます。フォルダが存在しなくても、解凍するときには必要なフォルダは普通生成されるので、これで問題ありません。改めてZIPファイルの中身をコンソールからZIPコマンドを打ち込んでリストすると・・・
zip -v folder.zip
(結果表示)
zip info: local extra (16 bytes) != central extra (12 bytes): folder/.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/folder/._.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): folder/file1
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): __MACOSX/folder/folder/._.DS_Store
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/file2
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/file3
これで問題なくWindowsで解凍できるようになるのですが、もう少し丁寧にリソースファイルも削除してしまう方が良いでしょう。リソースファイルはMac特有のファイルでMacでは非表示になっているファイルですが、Windowsでは表示されてしまう上に活用方法が無い全くの邪魔な存在なので、削除してしまった方がWindowsの人たちには親切というものです。
ということで次のようにコンソールで打ち込みます。
zip -d folder.zip *.DS_Store
これでリソースファイルは無くなり、必要なファイルだけになりました。確認すると・・・
zip -v folder.zip
(結果表示)
zip info: local extra (16 bytes) != central extra (12 bytes): folder/file1
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/file2
zip info: local extra (16 bytes) != central extra (12 bytes): folder/folder/file3
完璧です。これでWindowsの人にも扱えるZIPファイルの出来上がりです。