7-ZIP32.dllによる圧縮を行っているのですが、少々困った問題が起きました。
分かりづらいので順を追って話させていただきます。
例えば、圧縮用のコマンドは以下のようになっているとします。
u C:\Test.Test.zip D:\ Test1\* -r
これで、以下のようなフォルダ構成の時
D:\
Test1\
Test1-1\
Test1-2\
Test1-2-1\
Test2\
C:\Test.Test.zip には以下のように格納されます。
Test1\
Test1-1\
Test1-2\
Test1-2-1\
ここまではOKです。
問題は以下のようなUNCパスの場合です。
\\Test\
Test1\
Test1-1\
Test1-2\
Test1-2-1\
Test2\
同様のコマンドを投げようとして、
u C:\Test.Test.zip \\Test\ Test1\* -r
とすると、起点フォルダ(Base directory)である \\Test\ の存在確認を真っ先に
するみたいなのです。よって、以下のエラーとなります。
「Base directory isn't found.」
同じようなコマンドを、UNLHA32.dllにて投げたときは、起点フォルダの存在確認は
行われないようで期待通りの動作をします。
何とかして、期待通りの圧縮を行いたいのですが、方法はないものでしょうか?
よろしくお願いいたします。
重要なことを書き忘れました。
\\Test\ はフォルダ名ではなく、ただのPC名です。
そのため、存在確認をされると、存在しないことになります。
気になるのは、その動作が仕様通りなのかと言う点。
付属のドキュメント等から確認が可能であれば、まずは確認ですね。
ドキュメントからは読み取れないなら作者に連絡を取ってみるという
話になると思います。統合アーカイバプロジェクトのDLLなら作者は
日本人なので問合せも日本語でOKでしょうから確認もすぐ取れるかと思います。
で、仕様ですと言う話ならその部分の変更が可能なのかと言う話かなと
作者の方で納得してくれて変更してもらえるならそれはそれでOKですよね。
仕様としてはそれが正しい、もしくは原版の仕様との関係で変更できないなら
方法論をそもそも考え直す必要があるかもしれません。
その辺は考え方次第かなと。
圧縮ファイル内のフォルダ構成が同じならOKと言うのであれば、
一旦ローカルにコピーして圧縮と言う手とか、etc...。
とにかくまずは仕様の確認と言う事になるのではないかな。
「まず仕様確認」というところは同感ですが、GPLみたいですから、
ソースもあるし直したければ自分で直せばいいのでは。
一度聞いてみるのはありだとは思いますが、「作者に直してもらう」とか
云々言うものではないように思いますけどね、思想的に>GPL
「bunさんが自分で修正できる自由(Free)」があるのでしょうし、
(もちろん諦める自由もあります)
中をいじってそれが他の人にも有用だということならば、
bunさんからフィードバックすればよいのではないかと思います。
私自身はGPLを避けたい人なので中は見ていませんが、
GPLでも問題ない人ならば、エラーの文言とかでソースをあたれば
修正箇所の検討はつきませんか?
# 失礼、LGPLに訂正です。(個人的に避けたいのは一緒ですが)
まあ、ライセンス的には弄って良いのでしょうし、
それはそれで有りかと思いますけれど、その辺も含めて
作者さんと相談で良いのではないかなぁと。
作者さんがその方が良いと判断すれば、対応してくれるのでは
と言う気もしますし。
そういえば、LGPLってソース改変して作成した物を公開する場合、
もしくはそれを組み込んだソフトを販売するような場合って
ソース公開の義務とか有りませんでしたっけ。
Banさんが避けたいと言っているのはこの部分の事かな?
#思想の話でオフトピ申し訳ないです。
いちいち相談されたり応対したくないから
自由にいじれるライセンスで公開してる
人もいるでしょう。
今回がそうかはわからないですし
相談してみるってのは普通にありだと思い
ますが
自分で直すつもりで不明点などを確認する
とかでなく
もし何の貢献/フィードバックもなく直して
もらう前提であるなら、
「GPLを利用する、開発者」としては
くれくれ君に思えて私は嫌です。
あくまで私見ですが。
私はお仕事ですので,オープンソースとかは使わないで
基本全て自前で作ってますよ
でも,趣味でプログラムをする人ならば,
くれくれ君でいいと思いますよ
せっかく興味が出て,例えばゲームとか作っちゃいたいなぁ
なんて思ったとして,それがその人の本当にしたい事ならば
それ以外のことでつまづいて
ガンバっちゃおっていうモチベーションを下げるっていうか,
プログラムをするよ!の敷居を上げるっていうか,
そういうのはつまらないと思うしねぇ
ただ、一番したい事が7-ZIPだったり,お仕事の場合だったら,
前言撤回しちゃいますけどねwww
あ,黙ってまぁす
蛇足
販売かどうかは無関係でLGPL自体の改変は
ソース公開ですね
GPLならリンクしたものも要公開ですが
LGPLならリンクしたものは非公開も可です
但しリバースエンジニアリングは許可する
必要がありますが
(正式にはライセンス条項を確認ください)
私が見たくないのは別の理由なので、
個人的には賛同してませんが思想は尊重し
ますし
もちろん利用するならライセンスは守りま
す。
あ、元々オープンソースの開発者とか趣味
の初心者とかは私も許容です。
PATiOさんのレスは仕事なら相談とな
っていたので…
もし「相談」が「対価の支払い」も前提に
されていたらすみません。
応じてくれるなら金で解決ってのもビジネ
ス的にはありですね
#ラウンジに行くべきですね。以後私もこち
らでは沈黙します
7-ZIP32.dll?のラッパークラスを作って
確認しちゃうのがやだったら確認しないようなクラスを作ってしまったらどうですか?
デフォルトの動作に悩む事はなくなると思いますよ
はい,ここからは想像ですけど
UNLHA32.dllでは...なんて言い方をされていたので
ひょっとして,どっちでも好きな圧縮を選べる的なことで,
同じメソッドから動作させたいので振る舞いが違うと困るって事かな
なんて思ったので。。。
カレントを動かしてみては如何でしょうか。
#動作を確認しておりません。
あるPCがネットワーク共有している複数のフォルダに対し
他のPCから見て「'PC名'フォルダの下に、複数のフォルダがある」として
そのまま扱いたい
ってのは普通のことなんだろうか?
>何とかして、期待通りの圧縮を行いたいのですが、方法はないものでしょうか?
基準となるパスがネットワーク先のPC名のときだけ
圧縮側のPCに、圧縮したい形で整理したフォルダをつくってそれを圧縮する
皆さんありがとうございます。
ほぼほぼ予想通りの内容ですね。
1つ知らなかったのが、あれはフリーなんですね。
自分でソースコードをいじって公開しちゃっても良いというのは
初めて知りました。
まずは作者の方に問い合わせてみることから始めてみたいと思います。
hiroccoさん。
> UNLHA32.dllでは...なんて言い方をされていたので
> ひょっとして,どっちでも好きな圧縮を選べる的なことで,
> 同じメソッドから動作させたいので振る舞いが違うと困るって事かな
> なんて思ったので。。。
図星です。
もともと、UNLHAしか対応してなかったんですが、
脆弱性問題から、どうしてもZIPに対応して欲しいという話になって、
対応してみたら、UNLHAのときと同様の圧縮ができない(^^;)
というのが事の発端です。