• ベストアンサー

Javaで自己解凍ファイルを作るには?

言語:Java WEBサーバ:Linux クライアント:Windows 以上の環境で Linux-Java側で、自己解凍ファイルを生成して、 Windowsクライアントでダウンロードし、 自己解凍できるようなファイルを作成できますでしょうか? java.util.zip.*を見てみましたが、わかりませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

自己解凍するにはダウンロードしたファイルがPE形式(Windowsの実行形式,要はEXE) である必要があり。ダウンロード後ユーザー側に実行してもらいます。 (ActiveXを使って自動実行させる方法もありますが、少なくとも最新のOSではデフォルトで警告がでます。) 自己解凍のexe作成は色々あるけど一番ポピュラーなのはzip方式による自己解凍。 vector(http://www.vector.co.jp/)で「自己解凍 zip」で検索すればフリーソフトがでてくるので Windowsならそれを使えば良いです。 でこれをlinux上で実現させるには PE形式について知る必要があるでしょう。 自己解凍ZIPは単に自分自身のEXEが解凍するコードを持っていて、それをデータ部に 対して実行するだけにすぎません。 http://www.atmarkit.co.jp/fdotnet/technology/framework08/framework08_01.html http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx 不可能ではないけど、Linux-Javaでこれを実現するのはめんどくさいですし どちらにしてもWindows上でC/C++コンパイラを使わざるをえないでしょう。 (linux自身が自己解凍するのならコマンドでありますが) 他にはlinuxでwindowsエミュレーターを動かし、 先ほど紹介した自己解凍exe作成のソフトを使う手もあるでしょう。 ちなみにjava.util.zipを使って自己解凍zipは作成できません。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=22632&forum=12 http://java-house.jp/ml/archive/j-h-b/021727.html

takokko
質問者

お礼

詳細に回答いただきまして、本当にありがとうございます。 今回、クライアント側には、なにもインストールできません。 LinuxにWindowsエミュレータを入れて Windows用自己解凍フリーソフトをインストールして、 Javaから自己解凍ソフトのコマンドを呼び出して ファイル生成するということになるのでしょうか? そのとき、Runtimeのexecでツールを呼び出すことになると思いますが、 Vectorの中で、オススメするとすれば、どれでしょうか? ちなみに、自己解凍時に、その解凍フォルダの中にある、ファイル(今回はエクセルファイル)を実行させたいと思っております。 自己解凍時にそのエクセルファイルを実行させるためのオプションも設定できるツールがよいのですが、、、 質問が、重ね重ね、申し訳ありません、もし、いいのがありましたら、 お教えください。

その他の回答 (1)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

>オススメするとすれば、どれでしょうか? 私も使った事はないので分かりません。 ちょっと検索しましたが、案外コマンドプロンプトから操作できるものってないですね。 またWindowsエミュレーターも使ったことはないので、その辺もわかりません。 一応「wine」が有名ですがその辺については改めてlinuxのカテゴリで質問するとよいでしょう。

takokko
質問者

お礼

ありがとうございます。 今回、Linuxサーバにしたうえで、 この自己解凍型圧縮ファイルを作るために、 Windowエミュレータを入れてまで、 やるには、あまりにもリスク高に思われましたので、 自己解凍型ファイル生成はあきらめます。 ありがとうございます。

関連するQ&A