zipとかunzipについて

[戻る]
hirocco 2010/12/20(月) 12:07:50
いままで、何にも考えずにzip/unzipは J# を利用してたんですけど、
これって、もう無いっぽいじゃないですか
できれば、オープンソース等は利用したくないんですけど、何かいい方法ないですか?
もう標準じゃないVisualJ#2.0のインストールとかめんどくさいですね

aetos 2010/12/20(月) 17:29:17
どうしてオープンソースが NG なのでしょうか。
ということはクローズドソースなら OK なのかと思いますが、おそらくそういうことで
はないのでしょうね。

少なくとも .NET Framework 4 に標準機能として ZIP 圧縮はありません(ZipPackage 
は目的が異なるので使えません)。
Microsoft も要望が非常に多いことは認識しているので、.NET 5 には入るかもしれませ
んが、あと 2 〜 3 年は先になるでしょうね。

aetos 2010/12/20(月) 17:38:39
あ、肝心なこと言い忘れた。

というわけで、どういうモノなら OK なのかをもうちょっと具体的に書いて頂ければ、
代替になるライブラリを提案できると思います。
標準機能としてはありません。

サードパーティライブラリはたくさんあります。
オープンソースのものもそうでないものも、有償のものも無償のものも。

http://xceed.com/Zip_Net_Intro.html
http://sharpziplib.com/
http://dotnetzip.codeplex.com/

また、Microsoft 製のライブラリも CodePlex でリリースが予告されています
(CodePlex ですからオープンソースです)。

アンマネージ DLL を使うという手もあります。

http://www.info-zip.org/

また、根性があれば、もちろん自作も可能です。
アルゴリズムのコア部分は GZipStream という形で標準搭載されていますので、あとは
それを使って Zip ファイルを組み立ててやるだけです。

hirocco 2010/12/20(月) 18:18:04
[[解決]]
基本的にMFC、Visual9にて商用のソフトを作っていまして
できれば、トラブル発生時にフォルダごと客先から移動で検証作業ができるのが望まし
いです

オープンソースといってもライセンスとかも色々あったり何でもしていい訳ではないと
思いますし、
客先には再配布パッケージのみのインストールで環境は構成して、
トラブった時、できるだけ手のひらに置いておきたいですね(ブラックボックス的なのは
ちょっと・・・)

というニュアンスでできればという、あくまで希望です

ただ、3rdパーティー製も便利なら、まぁ視野には置いてもいいかなとは思いますけ
ど、ActiveXとかライセンスの手続きとか考えるとかなり唸るほど便利でないとなかなか
手は出さないですね

知らないだけで、こんなのあったんだ的なzip/unzipの方法があったらいいなぁと思いま
した
というのも、最近の流れとして ePub が来るような気がしまして

まぁ、無ければ J# を gcroot で利用するだけなんですけどね

aetosさん、相談に乗ってくれてありがとうございます

aetos 2010/12/20(月) 18:30:31
しまった。
J# って書いてあったから、つい C# のつもりでレスしてしまった。
C++ フォーラムでしたねここは。

まぁ、どれがいいかはいろいろ評価してみてください。

ITO 2010/12/21(火) 14:13:09
WIN-XPからZIPの圧縮/解凍が出来るので、WIN7から標準のWINAPI関数としてほしいです
ね。

hirocco 2010/12/21(火) 16:59:49
ITOさん、そうなんですよ、まったくその通りですね
っていうか、知らないだけで既にあったりして…
なんて、淡い期待をいだいてました

ITO 2010/12/21(火) 19:56:53
ん?
フレームワーク2.0?
 http://msdn.microsoft.com/ja-
jp/library/system.net.mime.mediatypenames.application.zip(VS.85).aspx

フレームワーク4.0?
http://msdn.microsoft.com/ja-jp/library/system.io.packaging.zippackage.aspx

フレームワーク3.0?
http://msdn.microsoft.com/ja-jp/library/system.io.packaging.package(VS.80).aspx


WINAPIは、今のところ見当たらない(T.T)

hirocco 2010/12/21(火) 20:31:50
せめて、system.io.packaging.zippackageが、次とか普通のzipとか無圧縮zipにも対応
してくれるといいですよねぇ

っていうか、実は既に対応してて使い方間違ってるだけだったりして…

bun 2010/12/22(水) 09:22:48
私もこれからZIP書庫の扱いをしようと思っていますが、
  解凍:UNZIP32.DLL
  圧縮:7-zip32.dll
の予定です。

双方とも日本語マニュアルがしっかりしていてお勧めです。

特に、7-zip32.dllの方は、作者の話によると、
「7z形式の圧縮解凍および通常よりも圧縮率の高いZIP書庫を作成します。」
だそうです。            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

hirocco 2010/12/22(水) 10:51:48
私の考えている使い方としては、複数のフォルダ、複数のファイルからなるプロジェク
トを見た目上1つのファイルとして扱う予定です
そして、拡張子を.zipではないものにして利用する予定です
新しいエクセルの.xlsxと同じ考え方ですね
まったくOfficeと同じでいくならば、system.io.packaging.zippackageでもよかったん
ですけどねぇ
ユーザが解凍して中の、たとえばCSVファイル等に手を加えて、再zipしたりとかも有効
にしたいので、できれば普通のzipが扱いたかったですね
アプリケーション上では直接解凍なしで直接いじるのを視野に入れると無圧縮とかもあ
りかなと…
で、フォーマットとチェックサムの問題だけみたいなので、作っちゃうかなぁなんて考
えてました
www

aetos 2010/12/24(金) 10:19:48
> 私の考えている使い方としては…

であれば、いっそのこと OPC に乗っかってしまうのも手だと思います。
その場合なら ZipPackage が使えます。
OPC 自体は Office 専用ではなく、汎用のコンテナ規格ですから(XPS とかでも使って
る)。

hirocco 2010/12/24(金) 18:37:35
aetosさんありがとうございます
ZipPackageの読み込みって、汎用的で素敵な圧縮/解凍のフリーソフトで再圧縮したもの
でも読み込めるんですか?
だとしたら、追加されたXMLを無視しちゃうだけでいいってことですね?
できないと決め打ちでノーチェックでした
マニュアルヨメって怒られそうですね www

aetos 2010/12/24(金) 19:38:40
> 汎用的で素敵な圧縮/解凍のフリーソフトで再圧縮したものでも読み込めるんですか?

中身が OPC 規格であれば、多分できると思います。試してはいませんが。
Excel 2010 で試したら(.xlsx ファイルは OPC 規格ですが、Excel 2010 の実装に 
ZipPackage が使われているかどうかは知りません)、7-Zip で超圧縮したファイルも開
けました。

古いスレッドには追加発言できません。