# Lychee

## About

Lycheeは、TPIという仕様に対応したプラグインを利用することでさまざまな書庫を操作することができるアーカイバです。Lycheeには、統合アーカイバDLLやSusie Plug-in(SPI)などに対応するTPIが同封されています。

## Feature

- TPIによる書庫操作。
  - 書庫の作成、ファイルの追加、展開、削除、検査、修復機能。
  - 書庫とSFXの相互変換機能。
- wxWidgetsを採用することでWindows/Linux双方で動作。
- Unicodeへの対応。
- 仮想リストビューを用いた高速動作。
- 多言語対応UI。

※但し、実際の動作はTPIの実装に依存します。

## TPI(s)

### 7zArc

7z,zip,NSIS,MSIなど、7-zipで対応している諸形式の処理に対応するTPIです。

動作には7z.dllか7z.soが必要です。

### calLibrary

統合アーカイバライブラリに対応するTPIです。統合アーカイバ仕様に従う一般的なライブラリに対応しています。

対応しているライブラリについてはcalLibrary.xmlを参照してください。また、このファイルに記述することで新たなライブラリに対応したり、ライブラリに送るコマンドラインを変更することができます。cuiWrapper.xmlには簡単な書式の説明を行っていますので、そちらも参考にしてください。

### cuiWrapper

コマンドラインベースの実行ファイルにコマンドラインを送信したり、出力を解析したりするTPIです。単に出力を読み込むだけでなく、OSの標準コマンドを利用してデータを加工することもできます。

送信するコマンドラインや出力の解析方法についてはcuiWrapper.xmlに記述されています。このファイルを編集することで、コマンドラインを変更したり、様々な実行ファイルに対応したりすることができます。

### eggArc

ALZipで作成されるegg書庫やalz書庫に対応するTPIです。

動作にはUnEGG32.dllが必要です。

### rarArc

WinRARなどで作成されるrar書庫に対応するTPIです。

動作にはunrar.dllかlibunrar.soが必要です。Linuxでは、unrarsrc-xxx.tar.gzを入手し、makefile.unixの11行目を次のように修正し、次のコマンドを実行してください。

修正前:`DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE` 修正後:`DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DSILENT -O2` コマンド:`make -f makefile.unix lib`

### spiLibrary

SusieのPlug-inであるSPIに対応するTPIです。

00AM形式のSPIにのみ対応しています。bin/lib以下にSPIを配置することで認識します。

なお、00IN形式のSPIについてはxpiLibraryで対応しています。

### xpiLibrary

00IN形式のSPIと、AtoB ConverterのPlug-inであるXPIに対応するTPIです。

画像ファイルを書庫と同じように開き展開することで、SPIで対応している画像ファイルを、XPIで対応している形式に変換します。

spiLibraryと同様に、bin/lib以下にSPIやXPIを配置することで認識します。

## Customize

### Lycheeの設定を変更する。

confファイルを編集することで動作を変更できます。

### Lycheeを書庫に関連付ける。

#### Windows

association-sample.regを参考にregファイルを編集し、実行してください。association-sample.regはあくまでもサンプルなので、決してそのまま実行しないでください。

#### Linux

lychee.desktopを参考にdesktopファイルを編集し、~/.local/share/applications/(現在のユーザのみ)または/usr/share/applications/(全ユーザ)のいずれかにコピーしてください。その後、`update-desktop-database (コピー先フォルダ)`を実行してください。

### LycheeのUIのデザインを変更する。

share/ico以下の画像を差し替えることで、UIで使用するアイコンを変更できます。また、share/xrc以下のXRCを編集することで、UIをさまざまに変更できます。

### LycheeのUIのテキスト/言語を変更する。

share/locale以下のpoファイルを編集し、moファイルを作成することでテキストを変更できます。また、share/locale/lychee.potから新たなmoファイルを作成することで、UIを別の言語に変更できます。

## Tips/FAQ

### Inno Setupのインストーラを展開するには？

innounp.exeを用意した上で、ファイルの拡張子を'.inno'に変更してから開いてください。

### Linux上でエラーが表示されて書庫が開けない。

「再配置後にセグメントprotをリストアできません: 許可がありません」あるいは「cannot restore segment prot after reloc: Permission denied.」というエラーの場合、SELinuxが問題の原因となっているようです。エラーが出る.soファイルに対して、`chcon -v -R -u system_u -r object_r -t textrel_shlib_t XXX.so`を実行してください。

## Notes

LycheeはGNU LGPL 2.1の下で配布されています。再配布、改変などの条件についてはlicense.txtを参照してください。また、Lycheeに使用されている画像は、Crystal Projectの画像を使用しています。Crystal Project はGNU LGPL 2.1で配布されている画像集で、Everaldo.comから入手できます。

Lycheeは正式版ではありません。未完成の部分や欠陥が存在することをご承知の上ご利用ください。また、Lycheeを使用したことにより生じたいかなる損害に対しても、開発者は一切の補償を致しません。しかしながら、バグや要望などが有りましたら、TPI Projectのウェブサイトもしくはメールにてご連絡いただければ対応するかもしれません。