导致CHM编译失败的主要因素有哪些?


下面是导致CHM编译失败的主要因素(供您分析失败原因时参考)

用Easy CHM编译CHM的时候,在编译状态里会列出当前出现问题的文件名,可以对照下面的说明用排除法来排除网页的错误, 排除的时候,要检查Easy CHM编译状态里当前正在编译的文件以及前一个文件。
  1. 无效的源文件文件名或目录名 - CHM格式能够很好地支持标准文件名,比如:a~z;A~Z;0~9以及下划线_。但是CHM格式不能支持带空格或符号“&”等的文件名(其原因,根据作者的判断,是微软的CHM系统存在BUG,微软的CHM编译器会像网站上处理网络地址那样把文件名里的空格等特殊字符自动转换为%20等URL地址的形式,但在读取的时候,却仍在找原来的带空格的文件名,这样的结果肯定是“文件或页面无法找到”--尽管文件实际就在CHM里;在这个BUG得到纠正前,建议您只使用前面讲的标准文件名)。无效的源文件文件名不一定会导致编译失败,但其结果是您无法正常使用制作好的CHM文件,比如出现“页面找不到”或图片无法显示的错误。基于前面的考虑,作者建议您尽量避免使用中文作为文件名,以免遇到不可预期的错误

  2. 在文件名里使用了误导CHM编译器的扩展名,比如类似001.html.gif或002.html.exe这样的错误描述文件格式的文件名,CHM文件系统会认为001.html.gif或002.html.exe是一个网页而尝试去分析里面的链接或尝试分析里面的检索信息,如果001.html.gif是一个图片而002.html.exe是一个EXE文件的话,那有时CHM将会无法编译并“假死”在那里,更重要的是: 即便您的CHM文件最后编译成功,001.ht1.gif这样的图片也无法正常显示 - 您看到的会是个红色的X二不是图片。而更多的时候,1_1.ht1.jpg这样的文件名及文件链接会导致CHM编译出现各种错误,无法正常编译CHM。 请确保您的源文件没有类似1_1.ht1.jpg这样的文件名,同时网页里也没有指向5_1.ht1.jpg这样文件名的链接。 1_1.ht1.jpg修改为1_1_ht1.jpg就可以正确编译CHM了。

  3. 您的所有源文件都不要使用类似"xxx.Hxxx.xxx"这样的文件名或目录名,这里的.h会误导CHM编译器, 比如"001.ht1.gif" 或者"\www.honestxx.com"或者"\2.html.files", 这些文件或目录名可以修改为"001_ht1.gif" 或者"\www_honestxx.com"或者"\2_html.files".


  4. 这里有个用户编译CHM失败的例子,源文件里有个文件名如下:
    游戏\http___attachments.hiapk.com_month_0911_0911041818f3a6a4379a22c0c9.png 每次编译到这里就失败,编译的时候提示错误:floating point not loaded。
    s.hiapk...png就是罪魁祸首,修改为s_hiapk...png就正常编译。
    还有一点,这个文件名太长了,如果存在很多的目录嵌套,又会产生新的问题。

  5. 源文件名或目录名里不要包括类似'&' 或 '#'这样的特殊字符, 比如, 像'123#ebook.html' 或 '123&456.html'这样的文件名可能会导致在生成的CHM里出现导航错误。 类似地,如果网页文件名里有百分号%,可能也会导致最终的CHM无法显示这个页面。

  6. 某个网页源文件损坏-网页内容不完全或里面有某些二进制字符等,导致CHM编译器一直在尝试在不完全或错误的信息里读出需要的指令,这也会导致无法编译并“假死”在那里。

  7. 您使用的网页制作工具在网页里添加了不规范的网页指令导致CHM编译器无法编译并“假死”在那里。我们都希望浏览器具有很高的容错性,而IE的容错性就比较好,但是,作者一直认为CHM格式只能是作为IE浏览器的子集而存在,至少目前如此,所以在功能上、容错性等方面不如IE;而CHM格式需要微软的维护,为了制作CHM我们只能先适应它目前的要求。当您在编译过程中遇到长久停在某个文件,而您又知道这个文件并没有那么大足以消耗那么多的时间去分析,不妨自己仔细分析一下这个网页文件的内容,看是否有什么特殊的地方导致编译无法继续。

  8. 内存或硬盘(尤其是系统所在的盘符)不足导致编译失败,这主要出现在制作比较大的CHM时,您不妨关闭一些程序或整理出更多的磁盘空间再编译。


  9. 工程里的源文件文件名过长或者子文件夹名称过长,特别是当自文件夹嵌套比较多的情况下。建议缩短文件名,如果使用类似001、002这样的文件名会很少遇到文件名过长的问题。用户咨询问题的时候,发现他们使用的中文文件名经常会出现一些特别长的长文件名。
    根目录 + 自文件夹 + 网页文件名 的总长度控制在200字符以内会较少出现问题。


CHM格式是微软操作系统直接支持的帮助文件格式,CHM编译器本身也是使用的微软提供的,
由于CHM格式推出的时间比较早,后期没有什么更新支持,
所以制作CHM需要适应CHM编译器本身的一些特点
-因为CHM编译器和CHM格式很多年没有更新版本。

Easy CHM是国华软件提供的专门制作CHM文件的软件,编译CHM的时候也会受到上面因素的影响。





版权所有 © 2000-2023 国华软件 保留全部权利.