Noah'S
eXtention 解説
for ver 2.50
Noah では、テキストファイルによるプラグインで、コマンドラインexeや
統合アーカイバDLLへの対応を拡張できます。
この文書ではそのやり方について解説します。
このNSX拡張は、上級者向け機能です。拡張しなくてもNoahは各種DLLには標準で
対応していますので、無理してこれを読む必要は全くありません。
NSXの書き方はわからないが拡張はしたいという人は、
「K.INABA's Homepage」で、拡張キットを手に入れることができます。
概要
Noahの拡張は、NSX という拡張子を持つテキスト形式のファイルを
typesフォルダに置くだけで完了です。
さて、ここでちょっとsample.lzhを解凍して、unlha32.nsxあたりを
テキストエディタで開いて見て下さい。
....見ましたね?
わかる人にはほとんどわかると思いますが、要は、DLLやEXEに送るコマンドの指定です。
K.INABAは説明下手なので、このファイルを読んでも何のことやらわからんかもしれないですが、
そのときはサンプルを見ればわかると思います。
フォーマット(1〜3行目)
NSXファイルに書くべき事項を説明します。まず絶対書かなくてはならない部分
1行目:DLLまたはEXEのファイル名 2行目:扱う書庫の標準的な拡張子 3行目:将来使うかもしれない。とりあえず空欄 |
ここから下では、省略可能な部分を解説します。COMPRESS部、MELT部、SFX部の順番は
どういう順でも構いません。
フォーマット(4行目以降)
COMPRESS部は、圧縮に対応する場合に必要です。
1行目:<COMPRESS> 2行目以降(最大3つまで):形式名,拡張子,コマンド ・ ・ |
1行目:<MELT> 2行目:コマンド |
1行目:<MELTEACH> 2行目:コマンド |
1行目:<SFX> 2行目以降(最大3つまで):コマンド ・ ・ |
%a = 書庫名(Archive name) *圧縮先書庫名 or SFXに変換される元書庫名 or 解凍される書庫名 圧縮解凍SFX(変換方式) %b = 基底ディレクトリ名(Base directory) *Noahに渡されたファイルのあるディレクトリ名 圧縮SFX(直接方式) %d = 出力ディレクトリ名(Destination directory) *書庫出力先ディレクトリ名 or 解凍先ディレクトリ名 圧縮解凍SFX %f = ファイル名のリスト( 「フォルダ内の全てのファイル」を表すワイルドカードは *.* を使う )(File list) *Noahに渡されたファイルのリスト or 部分解凍したいファイルのリスト 圧縮解凍(部分解凍)SFX(直接方式) %w = ファイル名のリスト( 「フォルダ内の全てのファイル」を表すワイルドカードは * を使う )(Wild filelist) *Noahに渡されたファイルのリスト or 部分解凍したいファイルのリスト 圧縮解凍(部分解凍)SFX(直接方式) %n = ファイル名のリスト( 「フォルダ内の全てのファイル」を表すときは単にフォルダ名を書く )(No Wildcard) *Noahに渡されたファイルのリスト 圧縮SFX(直接方式) %o = Noahに渡された一個目のファイルの名前(One file) 圧縮SFX(直接方式) %s = SFX書庫名(Sfx name) SFX %% = % という文字そのもの また、コマンドを送るときのカレントディレクトリは、 圧縮時「Noahに渡されたファイルのあるディレクトリ」(%bと同じ) 直接SFX時「Noahに渡されたファイルのあるディレクトリ」(%bと同じ) 変換SFX時「SFX書庫出力ディレクトリ」(%dと同じ) 解凍時「解凍先ディレクトリ」(%dと同じ) となります。
SFX部以外は、適当にnsxを眺めれば大体わかると思うので、SFXについて少し詳しく説明します。
SFXコマンドは最高三つまで書けます。もちろんCOMPRESS部に対応して使用されます。
つまり、COMPRESS部の上から2行目に書いた圧縮形式でSFX圧縮をしよう、とユーザーが
操作すると、使われるのはSFX部の上から2番目のコマンドになります。
「...だがちょっと待て」と、nsxファイルと見比べながらこの説明書を読んでるなら
貴方は言いたくなるでしょう。「unlha32.nsxとか、SFX部は一行だけだぞ?」
そう、そのとおり。でも大丈夫。SFX部に二行目がなかったら一行目が使われるようになってます。
普通は圧縮形式によってSFX変換コマンドを使い分ける必要はないですから。
でも一行目の形式はSFX化できるけど二行目のじゃできないとか言う場合どうする?
そのときは二行目に半角大文字で NO!! と書いて置いて下さい。(tar32.nsx参照)
☆ ☆ ☆ ☆
もう一点。SFX を作るコマンドは、世の中には2種類あります。
「直接SFXを作りながら圧縮するもの」「普通の書庫をSFXに変換するもの」
NSXでは、どちらを書いてもOKです。Noahの得意技自動判別しますんで(^^;
前者の場合、c -s aaa.exe aaa.txt bbb.bmp のような形、
後者だと -f aaa.cab のような形になると思います。
後者には圧縮したいファイルのリストすなわち%fや%wや%nが無く、前者にはある、
というのが判断基準です。
DLL名についての注意
Noahでは、DLL名から関数名を自動取得しています。
DLL名が Unrar32.dll だったら、Unrarを接頭辞として使う、と言った感じで。
(このやり方で取得できなかった場合ccを接頭辞にして取得します)
普通は、最初一文字が大文字、あと小文字とすれば大丈夫ですが、
unzip32.dll は必ず UnZip32.dll とするようにして下さい。
NSXで呼び出すExeの設定
Noahはexeを呼び出すと、exeが終了するまで無条件待機します。
exeは圧縮/解凍処理が終わったら即終了する設定にしておくのが望ましいです。
NSXファイルのテキスト形式
ファイルサイズは、32KBまでです。それ以降は切り捨てます。
さらに、30行までです。それ以降は切り捨てます。
SHIFT-JIS & CRLF のテキストファイルしか扱えません。
自作コマンドラインアーカイバを作ってる人へ
ソフトを公開するときにNSXを添付して下さるとうれしいです、なんちゃって(^^;