saeki-kの日記: .NET Framework 3.0のZipPackageクラス
2007年11月11日のエントリーで、「Windows PowerShellから.NET FrameworkのZipPackageクラスを呼び出せば、PowerShellでzipファイルが作れる。」と書きました。それ自体は今でも間違っていないんですが、ZipPackageクラスは、OPC (Open Packaging Conventions)で定義されたデータパッケージを扱うためのクラスであり、一般のzipファイルを作るのには不向きなようです。
私が使っている圧縮・伸長ツールExplzhは、先日のバージョンアップで、「先頭から30 byte目に‘[Content_Types].xml’の文字があるzipファイルを書庫と見なさないようにした。」という変更が入りました。Microsoft Office 2007のドキュメントファイル(docx、xlsx等)がOPCに準拠したものになっており、これらをzipと見なさないようにするための変更なのですが、裏を返せば、ZipPackgeクラスを使って作成したzipファイルは、書庫と見なされなくなってしまうということになります。
ZipPackageでzipファイルを作ると‘[Content_Types].xml’が入るということは当初から知っていて、単にこれが入るだけなら無視すればいいやと思ってたんですが、書庫として見なされなくなってしまうとあれば、これはかなり苦しい。Explzhの判定方法が正しいのかどうかは今のところ不明ですが、ほかにもこういう対応をするアプリケーションが存在する可能性はあるわけで、ZipPackageで(一般の) zipファイルを作るのは、とりあえず避けることにします。
- MSDN Magazine
OPC:データのパッケージ化のための新しい標準
.NETアプリケーションでzipファイルを扱うためのライブラリとして、「DotNet Zip Library」というのがあるようです。「Windows標準機能のみでzipファイルを作る。」という目的は果たせませんが、マネージドコードだけでzipファイルを扱えるという点で、私の探していたものの一つです。
.NET Framework 3.0のZipPackageクラス More ログイン