CHM は姿を変えたフォルダーです
.chm の中にあるのは、ごく普通の小さなウェブサイトです。HTML ページ、スタイルシートが一つ二つ、画像がいくつか、そして .hhc の目次ファイル。Microsoft の ITSS コンテナがそれらをエントリーのディレクトリとして持ち、一つか二つのコンテンツセクションに分けて格納します。セクション 0 はそのまま、セクション 1 は LZX 圧縮です。
このツールは各エントリーのパス・サイズ・セクション・種類を一覧し、実ファイルとして書き戻します。ZIP は内部パスを保ちます。/html/page1.htm は html/page1.htm になるので、展開すればそのまま閲覧できるフォルダーになり、名前がつぶれたファイルの山にはなりません。ヘルプファイルを展開する意味はまさにそこにあります。展開後もページ間のリンクが生きているのです。
仕組みを見たい場合
トグルを開くと、通常の展開では隠される ITSS ストリームも一覧に出ます。::DataSpace/NameList、::DataSpace/Storage/MSCompressed/ControlData、LZX のリセットテーブル、/#SYSTEM、/#STRINGS など。コンテナの動作そのものであり、それを覗けることがちょうど必要になる場面もあります。
復元できないエントリーはそう明記します
エントリーのバイト列を得られない場合、それは ZIP に書き込みません。具体的なエラーとともに失敗一覧に載せます。
そこまで厳格にする理由があります。このサイトの LZX デコーダーは [MS-PATCH] 仕様と libmspack の lzxd.c から書かれており、ビットストリーム読み取り・ハフマン復号・非圧縮ブロック・x86 フィルターにはユニットテストがありますが、verbatim と aligned のブロック復号は Microsoft 自身の圧縮器の出力に対して一度も動かしていません。オフラインで試せる資料がなかったからです。
展開結果に切り詰められたり壊れたりしたファイルが混じるのは、ファイルが無いことより悪い結果です。問題に気づくのはずっと後、そのファイルが別の場所に移り、CHM が手元から消えたあとになるからです。だから失敗は失敗として報告します。
そのほかの表示
ヘルプファイルのタイトル、既定トピック、目次ファイルと索引ファイルの名前、作成したコンパイラー、コンテンツセクションが使う圧縮方式。展開ではなく閲覧したい場合は CHM ビューアーをどうぞ。
プライバシー
ヘルプファイルはブラウザー内で開かれ展開されます。アップロードはありません。
Tiny Online Tools







