一位做共享软件做得很成功的同行说过:“一个好的共享软件,首先操作要简单容易上手,其次一定附带一个详尽的帮助手册。”可见,对于一个软件来说,帮助文件的重要性。不过大部分程序人员(包括我)都忽略了帮助文件的重要性,都认为自己做的软件相当简单,一看就会,殊不知我们是一个连底层都了解的开发人员。
前段时间本人做了一个图片处理软件,免费给一些同学和朋友使用,很多人的反馈是不知道怎么用,于是本人花时间做了一个帮助手册,得到了很多好的反馈,本人准备在结合他们的反馈意见之后发布一个Realease版本。在使用的过程中,我使用了微软提供的HTML Help WorkShop这个软件,可惜是英文的,为了方便广大对英语不是很熟悉的朋友,本人写了一份制作图解,希望对大家有帮助。
图1 HTML Help WorkShop运行界面
图2 新建一个工程
图3 是否从WinHelp项目转换
图4 设置项目文件的保存位置
图5 如果已经制作了hhc、hhk和htm文件,可以勾选上面的相应项
图6 新建帮助文件工程向导结束
图7 新建工程向导结束之后的界面
图8 contens选项卡
图9 添加一个内容页
图10 指定内容页的位置
图11 选取内容页
图12 填写标题(对比图9)
图13 Index选项卡
图14 添加Index向导第一步
图15 添加Index向导第二步
图16 填写完成之后的状况
图17 指定chm文件的起始页
图18 编译生成chm文件
说明:在制作过程中用到了.hhp、.hhk和.hhc三种文件,它们的作用分别如下:
.hhp:保存项目文件配置的有关内容,如便以后生成chm的语言以及打开chm的起始页;
.hhk:保存关键词索引目录的内容,其实是一个html文件,可以用记事本等打开查看和编辑。
.hhc:保存内容页的配置。其实是一个html文件,可以用记事本等打开查看和编辑。
通过记事本查看上面文件的内容之后,如果我们以网页的标题作为索引关键词,我们会发现.hhk和.hhc,这样可以直接copy,省去很多步骤。
附:.hhp文件内容(项目文件内容)
[
OPTIONS
]
Auto Index=Yes
Compatibility=1.1 or later
Compiled file=DotNet.chm
Contents file=Table of Contents.hhc
Default topic=dotnethelpIndex.html
Display compile progress=No
Index file=Index.hhk
Language=0x804 中文(中国)
[
INFOTYPES
]
Index.hhk文件(索引文件资源)内容
<!
DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"
>
<
HTML
>
<
HEAD
>
<
meta
name
="GENERATOR"
content
="Microsoft® HTML Help Workshop 4.1"
>
<!--
Sitemap 1.0
-->
</
HEAD
><
BODY
>
<
UL
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="首页"
>
<
param
name
="Local"
value
="dotnethelpIndex.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="C#调用API"
>
<
param
name
="Local"
value
="dotnethelpC#调用API.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="C#调用API详解"
>
<
param
name
="Local"
value
="dotnethelpC#调用API详解.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="C#中调用Windows API时的数据类型对应关系"
>
<
param
name
="Local"
value
="dotnethelpC#中调用Windows API时的数据类型对应关系.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="自己用C#做屏保"
>
<
param
name
="Local"
value
="dotnethelp自己用C#做屏保.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="基于C#实现用于显示照片的屏保"
>
<
param
name
="Local"
value
="dotnethelp基于C#实现用于显示照片的屏保.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="NHibernate 小纸条"
>
<
param
name
="Local"
value
="dotnethelpNHibernate 小纸条.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="用Nhibernate怎么实现数据的添加、删除、修改简单程序"
>
<
param
name
="Local"
value
="dotnethelp用Nhibernate怎么实现数据的添加、删除、修改简单程序.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS2005打包时加入卸载功能"
>
<
param
name
="Local"
value
="dotnethelpVS2005打包时加入卸载功能.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS2005项目的安装与布署"
>
<
param
name
="Local"
value
="dotnethelpVS2005项目的安装与布署.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS 2005中安装包的制作"
>
<
param
name
="Local"
value
="dotnethelpVS 2005中安装包的制作.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="使用VS2005制作安装包"
>
<
param
name
="Local"
value
="dotnethelp使用VS2005制作安装包.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="安装程序时读取路径的问题"
>
<
param
name
="Local"
value
="dotnethelp安装程序时读取路径的问题.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="iexpress的作用及使用方法"
>
<
param
name
="Local"
value
="dotnethelpiexpress的作用及使用方法.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="把.NET程序部署到没有安装.NET Framwork的机器上"
>
<
param
name
="Local"
value
="dotnethelp把.NET程序部署到没有安装.NET Framwork的机器上.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS2005怎么制作安装包"
>
<
param
name
="Local"
value
="dotnethelp初学者问一下,VS2005怎么制作安装包.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="日志记录组件[Log4net]详细介绍"
>
<
param
name
="Local"
value
="dotnethelp日志记录组件[Log4net]详细介绍.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="HTML Help WorkShop帮助手册"
>
<
param
name
="Local"
value
="dotnethelpHTML Help WorkShop帮助手册.html"
>
</
OBJECT
>
</
UL
>
</
BODY
></
HTML
>
Table of Contents.hhc文件(内容页项目资源)内容
<!
DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"
>
<
HTML
>
<
HEAD
>
<
meta
name
="GENERATOR"
content
="Microsoft® HTML Help Workshop 4.1"
>
<!--
Sitemap 1.0
-->
</
HEAD
><
BODY
>
<
OBJECT
type
="text/site properties"
>
<
param
name
="ImageType"
value
="Folder"
>
</
OBJECT
>
<
UL
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="首页"
>
<
param
name
="Local"
value
="dotnethelpIndex.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="C#调用API"
>
<
param
name
="Local"
value
="dotnethelpC#调用API.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="C#调用API详解"
>
<
param
name
="Local"
value
="dotnethelpC#调用API详解.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="C#中调用Windows API时的数据类型对应关系"
>
<
param
name
="Local"
value
="dotnethelpC#中调用Windows API时的数据类型对应关系.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="自己用C#做屏保"
>
<
param
name
="Local"
value
="dotnethelp自己用C#做屏保.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="基于C#实现用于显示照片的屏保"
>
<
param
name
="Local"
value
="dotnethelp基于C#实现用于显示照片的屏保.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="NHibernate 小纸条"
>
<
param
name
="Local"
value
="dotnethelpNHibernate 小纸条.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="用Nhibernate怎么实现数据的添加、删除、修改简单程序"
>
<
param
name
="Local"
value
="dotnethelp用Nhibernate怎么实现数据的添加、删除、修改简单程序.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS2005打包时加入卸载功能"
>
<
param
name
="Local"
value
="dotnethelpVS2005打包时加入卸载功能.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS2005项目的安装与布署"
>
<
param
name
="Local"
value
="dotnethelpVS2005项目的安装与布署.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS 2005中安装包的制作"
>
<
param
name
="Local"
value
="dotnethelpVS 2005中安装包的制作.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="使用VS2005制作安装包"
>
<
param
name
="Local"
value
="dotnethelp使用VS2005制作安装包.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="安装程序时读取路径的问题"
>
<
param
name
="Local"
value
="dotnethelp安装程序时读取路径的问题.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="iexpress的作用及使用方法"
>
<
param
name
="Local"
value
="dotnethelpiexpress的作用及使用方法.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="把.NET程序部署到没有安装.NET Framwork的机器上"
>
<
param
name
="Local"
value
="dotnethelp把.NET程序部署到没有安装.NET Framwork的机器上.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="VS2005怎么制作安装包"
>
<
param
name
="Local"
value
="dotnethelp初学者问一下,VS2005怎么制作安装包.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="日志记录组件[Log4net]详细介绍"
>
<
param
name
="Local"
value
="dotnethelp日志记录组件[Log4net]详细介绍.html"
>
</
OBJECT
>
<
LI
>
<
OBJECT
type
="text/sitemap"
>
<
param
name
="Name"
value
="HTML Help WorkShop帮助手册"
>
<
param
name
="Local"
value
="dotnethelpHTML Help WorkShop帮助手册.html"
>
</
OBJECT
>
</
UL
>
</
BODY
></
HTML
>