LhaForgeとは
LhaForgeは、ファイルを圧縮・解凍する無料のプログラムです。また、ファイルを分割・結合させることも出来ます。
さらに、「閲覧」機能を使えば、圧縮ファイルそのものは解凍せずに、含まれるファイルの一覧を見ることやその中から選択したファイルだけを解凍すること、あるいはファイルの追加や削除ができます。また、機能拡張スクリプトであるB2Eを使用することで対応形式を自由に増やすことが出来ます。
LhaForgeは統合アーカイバプロジェクトのDLLを利用しています。
業務利用について
LhaForge本体の利用に際しては作者の許可を取る必要はありません。しかし、問題が起きた際のサポートもありませんので、ご注意ください。また、LhaForgeが利用する統合アーカイバプロジェクトDLLには個別に利用条件があります。業務利用に際し、それら個別の利用条件の確認は利用者側で行ってください。
動作環境
Windows XP / Vista / 7 32bitおよび64bit版
一番確実に動作が保証できるのは、作者が主に使用しているWindows Vista Ultimate(32bit版)上です。
※LhaForge自体の動作環境です。統合アーカイバプロジェクトDLLの動作環境はこれとは異なる可能性があります。
※内部で使用している関数の都合上、Internet Explorer 4.0以上がインストールされている必要があります。動作確認済み環境では標準でインストールされています。
Windows MeやWindows 95/98、あるいは上記以外のバージョンのWindowsでも動くかもしれませんが、作者はそのような環境での確認ができていません。動作報告をいただければ幸いです。なお、Windows 98での動作保証はVer.1.3.0まで、Windows 2000での動作保証はVer.1.5.2までです。
開発環境
Windows Vista Ultimate/32bit 日本語版
Microsoft Visual Studio 2005 Academic Edition
WTL 8.0 Final
STLport 5.2.1
Microsoft Windows SDK for Windows Vista
多様な対応形式
それぞれ必要なDLLをインストールすることにより、圧縮20形式および解凍34形式、完全性検査10形式をサポートします。また、別途XacRett.DLLを導入すれば、解凍可能な形式をさらに増やすことができます。
また、K.INABA氏作のアーカイバ「Noah」の拡張スクリプトである「B2E」が利用でき、圧縮/解凍/閲覧可能な形式を無制限に増やすことが出来ます。
標準対応形式
圧縮および解凍が可能な形式
LZH(LZS/LHA) / ZIP(JAR) / 7Z / CAB / TAR / GZ / BZ2 / LZMA / XZ / TGZ(TAR.GZ) / TBZ(TAR.BZ2) / TLZ(TAR.LZMA) / TXZ(TAR.XZ) / JAK / YZ1 / HKI / BZA / GZA / ISH / UUE
解凍が可能な形式
Z / TAZ(TAR.Z) / CPIO / A / LIB / RPM / DEB / ARJ / RAR / GCA / IMP / ACE / BEL / ISO
完全性検査が可能な形式
LZH / CAB / ZIP / 7Z / RAR / HKI / ARJ / ACE / IMP / ISO
DLLインストーラを装備
LhaForgeは外部の統合アーカイバDLLを用いてファイルの操作を行います。ですが、LhaForgeが使用するDLLはWindowsの初期設定ではインストールされていません。つまり、別途DLLを入手する必要があります。
LhaForgeではこの面倒な作業を自動化するために、DLLインストーラ(アップデータ)を添付しています。初回起動時に表示されるメッセージボックスや設定画面の「DLLの更新」からDLLインストーラを起動できます。このDLLインストーラを使えば、DLLの導入・更新が簡単に行えます。
また、DLLの更新を確認するよう定期的にメッセージを表示することができます。これにより、最新版のDLLを使用することができます。
注意点
XacRett.dllは自動取得・更新の対象ではありません。B2E32.dllはLhaForge本体にバンドルされています。
複数の使用方法を用意
LhaForgeでは
エクスプローラ(シェル)の拡張を利用した右クリックメニュー経由
デスクトップや「送る」メニューに作成したショートカット経由
ファイルの関連付けを利用してファイルを一発解凍
の3つの使用方法があります。それぞれの使い方の詳細については、「使い方」の項目を参照してください。
必要に応じて詳細な設定が可能
LhaForgeでは各DLLの性能を最大限引き出せるように、出来るだけ詳細な設定ができるようにしてあります。もちろん、よく分からない場合には設定を変更する必要はありません。初期設定で十分実用に耐える設定になっています。
セキュリティを考慮
Directory Traversal問題
2004年7月末に「窓の杜」の記事「多くの解凍ソフトに指定外の場所へファイルが解凍されてしまう脆弱性が存在」で一般に知られるようになった「Directory Traversal問題」というものがあります。これは記事のタイトルの通り、予期しない場所にファイルを解凍できてしまうというものです。LhaForgeはこの問題に対し、以下に示す対策を行っています。
CAB / GCA / BZA / GZA / BEL / JAKの各形式については、危険なパス指定があれば解凍を拒否する
それ以外の形式についてはDLLに対策が施されているので、DLL側に対応を任せる
「UNICODE制御文字によるファイル名偽装」への対策
UNICODEの制御文字のうち、「見えない文字」や「文字方向を反転させる文字」はファイル名を偽装するために悪用されることがあります。LhaForgeではUNICODEが使用可能なUnlha32.dllおよび7-zip32.dllに対し、以下に示す対策を行っています。
Unlha32.dllはDLLに対策が施されているので、DLL側に対応を任せる
7-zip32.dllはLhaForge側でファイル名をチェックし、危険な文字を検出したときは解凍を拒否する
アーカイブ内ファイル一覧では名前に危険な文字が含まれるファイルは赤く表示し注意を促す
「バイナリ植え付け」への対策
Windowsでは、一般にカレントディレクトリ(現在作業中の場所)が外部DLLファイル検索対象に入っています。このため、対策がない場合、外部DLLロード時に、カレントディレクトリに置いた悪意あるプログラムをロードさせられる可能性があります。
LhaForgeでは、DLLロード時、カレントディレクトリを一時的にLhaForge本体の場所に変更する対策を行っています。
なお、LhaForgeで行った対策は必ずしも万全とは限りません。出来る限り危険と思われるファイルは解凍しないようにしてください。
※なお、上の文章で単にDLLと表記した場合、「統合アーカイバプロジェクト」のアーカイバDLLを指しています。
利用条件
LhaForge Ver.1.6.0は修正BSDライセンスで提供されています。利用者はこのライセンスに基づいて使用・再配布・改変を行うことができます。
ソフト紹介などでのスクリーンショットの公開には特に条件は設けません。業務利用については、「LhaForgeとは」の「業務利用について」を参照してください。
B2Eスクリプトエンジン(B2E32.dll)とDLLインストーラ(LFCaldix.exe)には単体ではNYSL ver 0.9982が適用されていますが、LhaForgeと一緒に配布する場合には修正BSDライセンスを適用します。
以下が修正BSDライセンスの参考日本語訳です。
LhaForge Ver.1.6.0
Copyright (c) 2005-2011, Claybird All rights reserved.
ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。
ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
書面による特別の許可なしに、本ソフトウェアから派生した製品の宣伝または販売促進に、Claybirdの名前またはコントリビューターの名前を使用してはならない。
本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、および特定の目的に対する適合性に関する暗黙の保証も含め、またそれに限定されない、いかなる保証もありません。著作権者もコントリビューターも、事由のいかんを問わず、損害発生の原因いかんを問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その他の)不法行為であるかを問わず、仮にそのような損害が発生する可能性を知らされていたとしても、本ソフトウェアの使用によって発生した(代替品または代用サービスの調達、使用の喪失、データの喪失、利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、一切責任を負わないものとします。
注意事項
LhaForgeが使用する統合アーカイバプロジェクトのDLLは、それぞれについて著作権所有者が存在します。また、それぞれのファイルについて転載条件や使用条件等が存在する可能性があります。詳細については、それぞれのDLLに付属の文章をお読みの上、それらを遵守してください。
LhaForgeを使用して起きた不具合、疑問等ございましたら作者までご連絡ください。出来る範囲で対処させていただきます。
LhaForgeに含まれるファイルの情報
右クリック拡張モジュールはHIROさん(JJworkshop)のTfShellをベースにして開発させていただきました。
DLLインストーラ(LFCaldix)はK.INABAさん(kMonos.net)のcaldixを改変して開発させていただきました。
B2E32.dllはK.INABAさん(kMonos.net)のNoah 3.195を改変して開発させていただきました。
インストーラ/アンインストーラにはEXEpress CX5 for free software License Editionを利用させていただきました。
LhaForge Ver.1.6.0の作成にあたり、rain(Amate)さんによる修正を取り込ませていただきました。
7-Zipはオープンソースソフトウェアです。ほとんどのソースコードはGNU LGPLのライセンスです。unRARのコードは、GNU LGPLとunRAR restrictionsの混在です。ライセンスについては、7-Zip licenseを参照してください。
7-Zip
~~~~~
License for use and distribution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7-Zip Copyright (C) 1999-2008 Igor Pavlov.
Licenses for files are:
1) 7z.dll: GNU LGPL + unRAR restriction
2) All other files: GNU LGPL
The GNU LGPL + unRAR restriction means that you must follow both
GNU LGPL rules and unRAR restriction rules.
Note:
You can use 7-Zip on any computer, including a computer in a commercial
organization. You don't need to register or pay for 7-Zip.
GNU LGPL information
--------------------
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
unRAR restriction
-----------------
The decompression engine for RAR archives was developed using source
code of unRAR program.
All copyrights to original unRAR code are owned by Alexander Roshal.
The license for original unRAR code has the following restriction:
The unRAR sources cannot be used to re-create the RAR compression algorithm,
which is proprietary. Distribution of modified unRAR sources in separate form
or as a part of other software is permitted, provided that it is clearly
stated in the documentation and source comments that the code may
not be used to develop a RAR (WinRAR) compatible archiver.
--
Igor Pavlov
COPY /B 7z.sfx + archive.7z archive.exe
COPY /B 7zS.sfx+config.txt+archive.7z archive.exe
7-Zip Extra 4.65
----------------
7-Zip Extra is package of extra modules of 7-Zip.
7-Zip Copyright (C) 1999-2009 Igor Pavlov.
This package contains the following files:
7za.dll - library for working with 7z archives.
7zxa.dll - library for extracting from 7z archives.
7zS.sfx - SFX module for installers
7zSD.sfx - SFX module for installers (uses msvcrt.dll)
7zr.exe - reduced version of console program 7za.exe
copying.txt - GNU LGPL
readme.txt - This file
Far\ - Plugin for FAR manager
Installer\ - Files to compress installers
Features of 7za.dll:
- Supporting 7z format;
- Built encoders: LZMA, PPMD, BCJ, BCJ2, COPY, AES-256 Encryption.
- Built decoders: LZMA, PPMD, BCJ, BCJ2, COPY, AES-256 Encryption, BZip2, Deflate.
7zxa.dll supports only decoding from .7z archives.
7-Zip is free software. Read file License.txt for more infomation about license.
Source code of 7za.dll and 7-Zip (including all interfaces
and small example application) can be found at
http://www.7-zip.org/
7za.dll and 7zxa.dll can work in Windows 95/98/ME/NT/2000/XP/2003.
7za.dll and 7zxa.dll work via COM interfaces
But these DLLs don't use standard COM interfaces for objects creating.
---
7-Zip for installers 4.65
-------------------------
7-Zip is a file archiver for Windows 98/ME/NT/2000/2003/XP.
7-Zip Copyright (C) 1999-2009 Igor Pavlov.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
7zr.exe is reduced version of 7za.exe of 7-Zip.
7zr.exe supports only 7z format with this codecs: LZMA, BCJ, BCJ2, Copy.
Example of compressing command for installation packages:
7zr a -t7z archive.7z * -m0=BCJ2 -m1=LZMA:d25:fb255 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 -mx
7zSD.sfx is SFX module for installers (it uses msvcrt.dll)
SFX modules for installers (7zS.sfx and 7zSD.sfx) allow to create installation program.
Such module extracts archive to temp folder and then runs specified program and removes
temp files after program finishing. Self-extract archive for installers must be created
as joining 3 files: SFX_Module, Installer_Config, 7z_Archive.
Installer_Config is optional file. You can use the following command to create installer
self-extract archive:
copy /b 7zSD.sfx + config.txt + archive.7z archive.exe
The smallest installation package size can be achivied, if installation files was
uncompressed before including to 7z archive.
-y switch for installer module (at runtime) specifies quiet mode for extracting.
Installer Config file format
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Config file contains commands for Installer. File begins from string
;!@Install@!UTF-8! and ends with ;!@InstallEnd@!. File must be written
in UTF-8 encoding. File contains string pairs:
ID_String="Value"
ID_String Description
Title Title for messages
BeginPrompt Begin Prompt message
Progress Value can be "yes" or "no". Default value is "yes".
RunProgram Command for executing. Default value is "setup.exe".
Substring %%T will be replaced with path to temporary
folder, where files were extracted
Directory Directory prefix for "RunProgram". Default value is ".\\"
ExecuteFile Name of file for executing
ExecuteParameters Parameters for "ExecuteFile"
You can omit any values.
There are two ways to run program: RunProgram and ExecuteFile.
Use RunProgram, if you want to run some program from .7z archive.
Use ExecuteFile, if you want to open some document from .7z archive or
if you want to execute some command from Windows.
If you use RunProgram and if you specify empty directory prefix: Directory="",
the system searches for the executable file in the following sequence:
1. The directory from which the application (installer) loaded.
2. The temporary folder, where files were extracted.
3. The Windows system directory.
Config file Examples
~~~~~~~~~~~~~~~~~~~~
;!@Install@!UTF-8!
Title="7-Zip 4.00"
BeginPrompt="Do you want to install the 7-Zip 4.00?"
RunProgram="setup.exe"
;!@InstallEnd@!
;!@Install@!UTF-8!
Title="7-Zip 4.00"
BeginPrompt="Do you want to install the 7-Zip 4.00?"
ExecuteFile="7zip.msi"
;!@InstallEnd@!
;!@Install@!UTF-8!
Title="7-Zip 4.01 Update"
BeginPrompt="Do you want to install the 7-Zip 4.01 Update?"
ExecuteFile="msiexec.exe"
ExecuteParameters="/i 7zip.msi REINSTALL=ALL REINSTALLMODE=vomus"
;!@InstallEnd@!