業務アプリケーションのFAQなどを.chmファイルとしてユーザーに提供する場合、フリーソフトのヘルプましんなどを使用する場合が多いと思う。
そんな便利なフリーソフトがあるにも関わらず、手動で.chmファイルをコンパイルする機会があったので、需要は少ないが、ナレッジを残す。
ヘルプファイルを手動コンパイルするために必要なもの
No | ファイル | 備考 |
---|---|---|
1 | .html | ヘルプページそのもの |
2 | .hhc | ヘルプファイルの左側にあるTreeViewの階層を定義するファイル |
3 | .hhp | プロジェクトファイル。コンパイル時のオプションなどを定義するファイル |
4 | hhc.exe | ヘルプファイルをコンパイルしてくれる.exe |
htmlファイル
html形式でヘルプページを作成しよう。cssも使用できる。
(ヘルプファイルもある意味、ブラウザといえるのだろうか。)
hhcファイル
ヘルプファイルの左側にはファイルの階層をTreeViewで表示している。
この階層の定義や、各階層ごとのアイコンの設定などを.hhcファイルに記述しよう。
基本的な構成は以下の通り。
<!--1階層目-->
<UL>
<LI><OBJECT type="text/sitemap">
<param name="Name" value="Title"/> <!--表示される名前-->
<param name="Local" value="htmlFilePath"/> <!--ヘルプページのパス-->
<param name="ImageNumber" value="1"/> <!--アイコン-->
</OBJECT></LI>
<!--2階層目-->
<UL>
<LI><OBJECT type="…">
…
</OBJECT></LI>
<!--以下無限に繰り返せる-->
<UL>
<LI><OBJECT type="…">
…
</OBJECT></LI>
</UL>
</UL>
</UL>
<UL>タグで階層の段階を表し、<LI>タグで一つのヘルプページを表す。
ハマったポイント
<LI>タグと<OBJECT>タグが同一行に存在しないとコンパイラが認識してくれず、メニュー階層に表示されない。
コンパイルログにエラー表記されないため、注意が必要である。
hhpファイル
ヘルプファイルをコンパイルするための設定情報を定義する。
あまりナレッジがなく、ヘルプましんで作成された.hhpファイルから不必要な設定を削っただけなので、詳しい説明はできない。
[OPTIONS]
Auto Index=Yes
Binary Index=Yes
Compatibility=1.1 or later
Compiled file=FAQ.chm
Contents file=FAQ.hhc
Default Font=MS UI Gothic,16,138
Default Window=XHP
Default topic=htmlPath
Display compile progress=No
Error log file=Compile.Log
Flat=No
Full-text search=Yes
Language=0x0411 Japanese
Title=FAQ
[OPTION]以外にも設定できるが、コンパイルを通すだけならば、上記で十分である。
hhc.exe
HTML Help Workshopをダウンロード、インストールする。
hhc.exeはC:\System32\hha.dllを使用するため、インストールした方が無難である。
コンパイル
>hhc.exe hoge.hhp
脆弱性の問題で、ネットワークドライブ上の.chmは正常に表示できない仕様になっている。
ローカルで内容を確認しよう。
起動
hh.exeで起動する。
起動時の初期ページを変更するためには「::」のあとに表示したいhtmlファイルのchmファイルからの相対パスを記述する。
>hh.exe hoge.chm
>hh.exe hoge.chm::fuga.html