【问题标题】:Index is empty in a chm file compiled with Microsoft HTML Help Workshop使用 Microsoft HTML Help Workshop 编译的 chm 文件中的索引为空
【发布时间】:2021-07-09 03:24:45
【问题描述】:

我正在使用 Microsoft Html Help Workshop 并尝试构建一个帮助项目,该项目包含 19k 多个帮助文件,包括 html、css、png 等。我将 hhp 文件构建为 new.hhp 并在其中放入以下行

  [OPTIONS]
     Auto Index=Yes
     Auto TOC=9
     Compatibility=1.1 or later
     Compiled file=new.chm
     Default Window=TriPane
     Default topic=HomePage.htm
     Display compile progress=Yes
     Error log file=log.log
     Full-text search=Yes
     Index file=Index.hhk
     Language=0x409 English (United States)
   [WINDOWS]
     TriPane="new",,"Index.hhk",,"HomePage.htm",,,,,0xe2520,255,0x304e,[0,0,800,600],,,,,2,,0
   [FILES]

我选中了创建二进制索引的选项,如here 所示。

我检查了包含关键字的选项,如 here 所示。

我将它编译为 new.chm,它会搜索所有必需的主题,但索引文件为空,如 here 所示。

我还检查了 index.hhk 文件,它也是空的,如图所示 here..

我无法为 19k 文件手动包含关键字。我应该怎么做才能使所有 html 文件中的关键字都添加到索引中并且我没有得到空索引? 感谢关注。

【问题讨论】:

  • edit您的问题并添加一些信息。完成后对我的回答做一个简短的评论。(1) 2008 年真的没有使用帮助创作工具,只使用了 HTMLHelp Workshop 吗? (2) 19000(真的吗?)HTML 文件仍然是当时使用的原始文件吗? (3) 原来的CHM文件还存在吗? (4) 这个文件有多大(MB)? (5) 附上您的一个 HTML 文件的 HTML 示例( 部分)。
  • 我的请求(请参阅上面的问题)添加一些信息怎么样?与我的问题相关的第一个想法是,如果以前的 CHM 仍然存在,则可以反编译旧的 index.hhk。

标签: html compilation chm tableofcontents html-help-workshop


【解决方案1】:

简短的回答 - 没有自动化的方法

关键字是通过 Microsoft HTMLHelp Workshop 手动分配给主题的。请记住 - CHM 文件和 HTMLHelp 研讨会的技术开发已有 25 年历史。但遗憾的是,即使在今天,Windows 下也没有真正的替代方案。

您可能希望 从 HTML 文件中包含关键字 选项自动集成关键字(HTML 语法,例如:<meta name="keywords" content="CSS, Script">)。但是这里对 CHM 的关键字有不同的看法,并且有一些特殊的含义(例如 <meta Name="MS-HKWD" content="keyword">)。我不记得了,但当时(25 年前)可能不存在 HTML 标签keywords

要知道,单字索引大家都很熟悉了,几乎从一开始就被用在参考书和贸易书的背面。但是为 HTMLHelp 文件 (CHM) 创建一个好的索引非常耗时并且需要大量工作。由于用户越来越多地使用 CHM Viewer(或 Google)的全文搜索,我现在很少创建复杂的索引。

(1) 您可能希望自己编写脚本来创建index.hhk 文件,例如:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="generator" content="Microsoft&reg; HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</head>
<body>
<OBJECT type="text/site properties">
</OBJECT>
<UL>
    <LI><OBJECT type="text/sitemap">
            <param name="Name" value="Flowers">
            <param name="Name" value="Flowers">
            <param name="Local" value="Garden/flowers.htm">
         </OBJECT>
    <LI><OBJECT type="text/sitemap">
            <param name="Name" value="Garden">
            <param name="Name" value="Garden">
            <param name="Local" value="Garden/Garden.htm">
         </OBJECT>
    <LI><OBJECT type="text/sitemap">
            <param name="Name" value="How one grows trees">
            <param name="Name" value="How one grows trees">
            <param name="Local" value="Garden/tree.htm">
         </OBJECT>
</UL>
</BODY>
</HTML>

(2) 您可能想要使用 FAR HTML 之类的免费软件工具(推荐使用向导!):

请注意 - 像 FAR HTML 这样的免费软件工具使用标签的完整内容来生成索引,并且不会输出单个单词作为帮助文件的索引。

(3) 您可以在以下位置找到更多详细信息:

【讨论】:

  • 我尝试使用您提供的 KIT 链接在索引中添加多个关键字,但是每当我启动 KIT 时,即使我下载了最新版本,它也会显示一个消息框来访问该站点以获取其最新版本现场提供。按确定后,它显示它支持排除 Windows 10 的 Windows 版本。此外,它花费了 1 多个小时。在不完成任务的情况下搜索关键字。我认为产品已经过时了。你能帮我做点别的吗?
  • @Rashmi - 是的,KIT 已经过时了。如我的回答中所述,该信息旨在用于使用 HTMLHelp Workshop 的索引关键字的特殊性 - 另请参阅:Making index with an undocumented function
  • 我使用 FAR HTML 得到了想要的结果。感谢您的帮助。