UNLHA32.DLL for Win32: Compress and Extract .lzh files Top Page

Common Archivers Library - 統合アーカイバ・プロジェクト
--- Sorry, Home Page in English is under construction.
***** English documents are --> English version of DLLs
     

.lzh ファイルの圧縮/展開(解凍)

UNLHA32.DLL for windows32

世界的にも圧縮形式のリーディング的存在の一つであり、国内では標準的なアーカイバ形式となっている .lzh ファイルの圧縮/展開(解凍)を行うライブラリ。



概 要







ダウンロード







FAQ:よくある質問







ソースコード等





・履 歴過去の履歴 to top 
 
  • 2008/6/29 Ver 2.64b 正式版公開。

    • 非インストーラモードでの WinSFX32M 作成に失敗していたバグを修正しました。

  • 2008/5/26 Ver 2.64a 正式版公開。

    • 正式版としてコンパイルを行っただけで, 特に変更点はありません。

  • 2008/5/11 Ver 2.64β版公開。

    • WinSFX32(M) について, WH_CBT フック処理の改善を行いました。

    • コントロールに対しての位置調整処理について, GetSystemMetrics() API を使ったものから ClientToScreen() を使ったものへ変更しました (Windows Vista 等では SM_CXSIZEFRAME 等に対する従来の前提が通用しないため)。

  • 2008/3/30 Ver 2.63i 正式版公開。

    • WinSFX32U が英語モードで正常に動作しないことのあったバグを修正しました。

    • MyReadFile() について, ERROR_HANDLE_EOF を返すべきところを ERROR_INVALID_PARAMETER を返してしまうことのあったバグを修正しました。

    • 拡張ヘッダ内での HDR_EXPLOIT_SIZE 発生については, 即時に ERROR_HDR_EXPLOIT エラーで処理を中止するようにしました。

  • 2008/3/18 Ver 2.63h 正式版公開。

    • Ver 2.63 以降,一部のソフトについて UnlhaFindFirstW() 等による検索が行えなくなっていたバグを修正。

  • 2008/3/16 Ver 2.63g 正式版公開。

    • Ver 2.63 以降において, ヘッダサイズ調整のダミーデータが付加されたヘッダの CRC 計算が正しく行われていなかったバグを修正しました。

  • 2008/3/3 Ver 2.63fβ版公開。

    • Ver 2.63 以降において, h0 形式ヘッダについて常にパスを付加して扱ってしまっていたバグを修正しました。
    • 安易に設定変更を行った結果, 正常に格納ファイルを扱えなくなる事例が後を絶たないことから, 設定ダイアログの『厳密なファイル名サーチ』項目を削除しました。これに伴い, 既存の設定による影響を排除するため, レジストリについても変更が行われています。

  • 2008/3/1 Ver 2.63eβ版公開。

    • MyMoveFileExW() の MoveFileEx() API 代替ルーチンについて,MOVEFILE_REPLACE_EXISTING が指定されていない場合に (無条件で) エラーを返してしまうことのあったバグを修正しました。

    • MyMoveFileExW() の MoveFileEx() API 代替ルーチンについて, 前処理の MyDeleteFileW() が FILE_NOT_FOUND となった場合に, そのままエラーを返して終了してしまう可能性のあったバグを修正しました。

    • Ver 2.53 以降において, UnlhaOpenArchive2() 等の API へ "-jx" スイッチが渡された際に, NULL ポインタ参照で一般保護エラーとなってしまっていたバグを修正しました。

  • 2008/2/23 Ver 2.63dβ版公開。

    • UnlhaEnumMembersProc() を使用しての圧縮 (格納) ファイル名指定が行えなくなっていたバグを修正しました。

    • WinSFX32U でのショートカット作成について, Unicode での DDE コマンド実行が正常に行われず, Explorer が落ちてしまうことのあったバグを修正しました (SFX のダイアログが ANSI で作成されてしまうことがあり, サーバ側に対してのみ Unicode ウィンドウの確認を行っていたため)。

  • 2008/2/16 Ver 2.63cβ版公開。

    • "-gr" スイッチを使用してのメンバ名変更が正常に行えなくなっていたバグを修正しました。

  • 2008/2/11 Ver 2.63bβ版公開。

    • WinSFX32U が Windows NT 4.0 で動作しなかったバグを修正しました (フラグの指定ミスで CP_THREAD_ACP が適用されてしまっていたため)。

    • WinSFX32U のテロップ表示が乱れてしまうことのあったバグを修正しました。
    • Ver 2.63 以降, 'J' 命令での書庫連結が正常に行われていなかったバグを修正しました。

    • lh0/lh1 形式で格納された lhd メンバに対して, ファイル名ヘッダ警告を行ってしまっていたバグを修正しました。

  • 2008/2/9 Ver 2.63aβ版公開。

    • 空き容量チェックの既定値がオフとなってしまっていたバグを修正しました。

    • 新たなサイズでの CreateFileMappingA() が行われずに, (UNLHA32.DLL による復旧処置として) そのまま通常の入出力アクセスへ切り替わってしまうことのあったバグを修正しました。

    • 利便性を考慮して, 設定ダイアログでのバッファフラッシュ指定がメモリマップトファイルにも適用されるようにしました。 詳細については HISTORY.TXT を参照してください。

    • 設定ダイアログでのレジストリ保存指定について, 必要のない項目についてはレジストリへの書き込みを行わないように改善しました。

    • Windows Vista 上でのプログレスバー表示について, トップ (右端) 位置への到達タイミングを簡易予測し, 先回りして描画を行うことで, アニメーションによる影響 (バーの伸び遅延) の緩和を図りました。 当然ながら, 処理に 1 秒と掛からないような場合には効果が現れません。

    • メモリマップトファイル使用時の FlushViewOfFile() の実行間隔を 64MB 毎とすることで, (一括) 書き込み時における負荷の低下を図りました。

  • 2008/2/2 Ver 2.63β版公開。

    • WinSFX32M を Unicode/ANSI 両対応版 (WinSFX32U と表記) へ更新しました。 !, $ ファイルについては BOM を付加することで UTF-16LE による記述も可能です。 互換性の関係上 SFX 設定ダイアログによるタイトル指定等については ANSI で記録されますので, Unicode が必要な場合は UTF-16 の $ ファイルを使用してください。
      WinSFX32U では, Windows XP/2000 であれば All Users 配下へのメニュー登録も行えますが, 行うには『管理者権限で実行』ではなく管理者アカウントでの実行を必要とする点に注意が必要となります。

    • ↑に伴い DELREG.EXE Ver 0.20 を同梱しました。

    • 古いアプリケーションで不具合が多々発生していたことから, "-o0" と "-o3" の意味を交代しました。

    • 拡張ヘッダのサイズ情報が最小値未満となっているにもかかわらずエラーとしていなかったバグを修正しました。

    • ANSI 版 API を使用している場合に, ログの桁揃えがずれてしまうことのあったバグを修正しました。 Unicode 版 API を使用しているアプリが (過去に行われていたように) ログから直接情報を取得することは皆無と考えられることから, Unicode 版 API の場合でも あえて GetStringTypeEx() API を使用して桁合わせを行っています。 これに伴い, 固定位置と長さによるログからの文字列取得が行えなくなっています。
      GetStringTypeEx() API 等で返される値と, アプリ側で行われる描画の (桁単位での) 結果が一致しない場合が多々あることから, 『桁が揃う』という前提が利きませんので注意が必要となります。

    • Ver 2.60 以降について, 不必要な Unicode パスヘッダを付加してしまうことのあったバグを修正しました。

    • コードページヘッダに従ってコメントを書き込むように改善し, 読み込みについても API のモードに従うようにしました。

    • Windows 95 であるにもかかわらず Win 98 以降と同列に扱われる可能性のあった箇所を修正しました。

    • 必要なヘッダ CRC や名前項目の存在しないヘッダについて警告ログを出力するようにしました。 そのような書庫を作成するツールが存在し, 多々配布も行われていることから, "-jsn" スイッチが指定された場合のみエラー扱いとなります。 これに伴いエラーコードを 2 つ追加しました。

    • 却ってパフォーマンス低下の嫌いがあったことから, Windows Vista 世代や x64 環境では, 明示的な FlushViewOfVile() API の実行を行わないようにしました。 MFNoFlush による強制設定は引き続き可能です。

    • ヘッダ読み込みが HDR_EXPLOIT_SIZE で失敗した際には, 以降の有効ヘッダを検索せず即座に処理を中止するようにしました。

    • EXPLOIT チェックを無効としている場合には h1 形式ヘッダでの全体サイズチェックを行わないようにしました。

    • ヘッダの冒頭が 4 (sizeof(DWORD)) 以外となっている h3 形式ヘッダを扱わないようにしました。

    • 'A', 'U', 'M' 命令の場合に "-gn1" スイッチが機能するように改善しました。

    • CommandLineToArgvW() からエスケープシーケンス処理を除いたサブセット的ルーチンを作成することにより, Unlha() 等のコマンドラインパラメータ数制限の緩和を行いました。

    • ルーチンとしては, ヘッダ読み込み時のサイズ制限が存在しないように改善しました。 既定のサイズを超えたものを不正扱いとする点に変更はありません。

    • 無駄なグローバル変数の整理を行いました。

    • 設定ダイアログのボタンコントロールをオートボタン系に変更することで処理の簡素化を行いました。

    • regpat() を使用するように処理変更を行うことで, regfpat() 系のルーチンを削除しました。

    • extheader() と extheader2() を統合し処理を一本化しました。

    • 文字列処理関数のパラメータチェックを強化 (当該箇所ではなく関数の入り口でチェックするように変更) しました。

    • Windows Vista 以降でのプログレスバー描画頻度を下げました。

    • "-jp0" での進捗グラフを, 基本的に LHMelt と同様のサブセット版プログレスバーへ変更することで, 本体側コードの一本化を行いました。

  • ...(中略)

  • 1995/3/13 Ver 0.01 最初のプロトタイプ完成。

 

・概 要 to top 

名称:
種別:
価格:
動作環境:
作者:
ホームページ:
概略: LHA.DLL の機能的な不備(あくまでも本プロジェクトのAPI仕様と言う意味で、ですが^^)に業を煮やしたMicco氏が、独自に LHA.EXE(吉崎栄泰氏作成。DLL 化に快諾いただいた吉崎氏に感謝)のソースを元に開発したものが、UNLHA.DLL(16bit版) です。
その名の通り、元々は解凍専用でしたが、当然の帰結として圧縮機能も付きました(^_^;)
でも、すでに LHA.DLL が存在した事と、継続性を重視した結果、UNLHA.DLL と言う名称が引き継がれて32ビット版 UNLHA32.DLL も開発されています。

日本では LHA が最も多く使用されている事もあり、この UNLHA.DLL/UNLHA32.DLL の需要が最も多いのは当然の話ですが、それ以上にMiccoさんの精力的な開発力が、UNLHA.DLL/UNLHA32.DLL を名実ともに本プロジェクトの「旗艦」たらしめていると言えます。



補足説明





 
  

・ダウンロード to top 

下記のいずれか一つのDown load!マークをクリックしてダウンロードして実行してください(または直接実行)。
ダウンロード後、実行すればインストール出来ます。
ドキュメントファイル等を \Program Files 以下にコピーするほか、一部レジストリに書き込みますが、必須ではないので、嫌いな人はアーカイバで解凍(LZH圧縮)してDLLのみシステムフォルダ(\Windows\system または \Windows\system32(Windows Xp 等))に(自己責任で)コピーしてください。

ダウンロードしてインストールする代わりに caldix等を使っても自動インストール可能です(以下からのダウンロードは必要ありません)。
 

ファイル名(ダウンロード) バージョン サイズ 最終更新日
Ver 2.64b 560,250 bytes 2008/6/29

作者(Miccoさん)のページからダウンロード
最新版のほか、随時β版も公開されています。

Vector:ソフトウェア・ライブラリ&PCショップ ベクターの紹介ページからダウンロード
(更新は少し遅れますので、バージョン番号をよく確認してください)

窓の杜 窓の杜紹介ページからダウンロード
(更新は少し遅れますので、バージョン番号をよく確認してください)

L-internet Resource Center LRC のページから
(更新は少し遅れますので、バージョン番号をよく確認してください)
Ver 2.02e 466,571 bytes 2006/1/31
Ver 1.89 405,284 bytes 2004/6/12
Ver 1.50 312,035 bytes 2000/6/12
 

・FAQ(よくある質問) to top 

  • インストール方法や問題が出た時の対策法について

    • Ver 1.9x や Ver 2.x での仕様変更に伴い,解凍に問題が起こるソフトがあるかもしれません。
      その場合は、旧バージョン をダウンロードしてみてください。


  • 「エンドマークが存在しません」と言う警告表示について

    • UNLHA32.DLL Ver 1.70a 以降のバージョンではヘッダー等のエラーチェックを強化してます。
      それに伴い、一部の書庫で「エンドマークが存在しません」と言う警告が出る場合がありますが、これは一部のアーカイバ(lhaplus等)が不完全な書庫を作成するのが原因です。このエラーは LHA.EXE や WinZIP では出ませんが、単にこれらではチェックしてないからです:-)
      たいていの場合、エンドマークが存在しないだけで正常に解凍出来るようですが、まれにファイルの後半がなくなっているケースも考えられますので、完全に全ファイルが解凍されているか確認してください。
      また、公開書庫として配布される場合、こういった(不完全書庫を作成する)アーカイバは圧縮には使用しないでください(lhaplusの最新版では修正されています)。


  • タイムスタンプのずれについて

    •  UNLHA32.DLL が通常作成する書庫では,タイムスタンプはすべて協定世界時(UTC)で扱われます。DOS(DOS 窓を含む)や Win3.1 用のプログラムは環境変数の設定に基づいて UTC→地方時間(例えば日本標準時間)への変換が行われるようになっているため、環境変数が設定されていない環境ではタイムスタンプがずれてしまいます。 もしタイムスタンプが9時間(まれに2時間)ずれているようなら間違いなくこの不具合です。
       日本国内においては、次の環境変数を設定してください。なお、これは Win9x 等の DOS 窓でも必要となります。通常は autoexec.bat で設定を行います。
      set TZ=JST-9
       (環境によっては "TZ=JST-09" とする必要があるかもしれません)
      上記の設定を行った場合でも、Win9x ではシステムの内部情報が異常となり正常なタイムスタンプでの展開が行われないことがあります。このような場合にはタイムゾーンの設定をやり直すことで大抵の場合は正常な動作となります。


  • 配布ファイルを展開したのに UNLHA32.DLL だけ表示されない

    •  アーカイバなどで展開した場合、Explorer ではユーザーが指定しない限り ".DLL" の拡張子をもつファイルが表示されないため UNLHA32.DLL が見えないことがあります。他のファイラーを使用するか、Explorer の「表示―オプション」メニュー (IE 4.0 等では「表示―フォルダオプション」) ですべてのファイルが表示されるように設定してください。 その際には『登録されたファイルの拡張子は表示しない』のチェックも外してください。


  • ファイルを圧縮したのにほとんどサイズが変わらない

    •  いくら UNLHA32.DLL にファイルを圧縮する機能が施されていたとしても『すでに圧縮されているファイル』をそれ以上圧縮するようなことはできません。jpeg のような画像や mp3 等の音源等は『それ自体すでに圧縮されている』ファイルですから圧縮効果は期待出来ません。

 
to top 

・ソースコード等について to top 

UNLHA32.DLL の圧縮・展開ルーチン等については、基本的に LHx Ver 2.02a のソースを元に、AR.EXE 950528 を参考に改造されており、この部分についての著作権は吉崎栄泰氏及び奥村晴彦氏が保有しています。
Win版および NT版の自己解凍ルーチンについては Mt.Wide(広山雅明)氏が著作権を保有して います。
UNLHA32.DLL つまり統合アーカイバ仕様の DLL 部分およびその他の追加部分についてはMicco氏が著作権を保有します。DLLそのもののソースコードは公開されていません。
 
to top 
ソフト内容に関わる事や転載依頼等は同梱ドキュメントを参照の上、作者の指定方法でお願いします。

^ 統合アーカイバ・プロジェクトのホームページ
このページに付いてのお問い合せは: webmasterあっとまーくmail.csdinc.co.jp
(June 30,2008 更新)