导致CHM编译失败的主要因素有哪些?
--------------------------------------------------------------------------------
下面是导致CHM编译失败的主要因素(供您分析失败原因时参考):
无效的源文件文件名或目录名
- CHM格式能够很好地支持标准文件名,比如:a~z;A~Z;0~9以及下划线_。但是CHM格式不能支持带空格或符号“&”等的文件名(其原因,根据作者的判断,是微软的CHM系统存在BUG,微软的CHM编译器会像网站上处理网络地址那样把文件名里的空格等特殊字符自动转换为%20等URL地址的形式,但在读取的时候,却仍在找原来的带空格的文件名,这样的结果肯定是“文件或页面无法找到”--尽管文件实际就在CHM里;在这个BUG得到纠正前,建议您只使用前面讲的标准文件名)。无效的源文件文件名不一定会导致编译失败,但其结果是您无法正常使用制作好的CHM文件,比如出现“页面找不到”或图片无法显示的错误。基于前面的考虑,作者建议您尽量避免使用中文作为文件名,以免遇到不可预期的错误。
-------------------------------------------------------------------------------------
在文件名里使用了误导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二不是图片。
您的所有源文件都不要使用类似"xxx.Hxxx.xxx"这样的文件名或目录名, 比如"001.ht1.gif" 或者"www.honestxx.com"或者"2.html.files", 这些文件或目录名可以修改为"001_ht1.gif" 或者"www_honestxx.com"或者"2_html.files".
源文件名或目录名里不要包括类似'&' 或 '#'这样的特殊字符, 比如, 像飓#ebook.html' 或 飓&456.html'这样的文件名可能会导致在生成的CHM里出现导航错误.
------------------------------------------------------------------------------------
某个网页源文件损坏-网页内容不完全或里面有某些二进制字符等
导致CHM编译器一直在尝试在不完全或错误的信息里读出需要的指令,这也会导致无法编译并“假死”在那里。
您使用的网页制作工具在网页里添加了不规范的网页指令导致CHM编译器无法编译并“假死”在那里。我们都希望浏览器具有很高的容错性,而IE的容错性就比较好,但是,作者一直认为CHM格式只能是作为IE浏览器的子集而存在,至少目前如此,所以在功能上、容错性等方面不如IE;而CHM格式需要微软的维护,为了制作CHM我们只能先适应它目前的要求。当您在编译过程中遇到长久停在某个文件,而您又知道这个文件并没有那么大足以消耗那么多的时间去分析,不妨自己仔细分析一下这个网页文件的内容,看是否有什么特殊的地方导致编译无法继续。
-----------------------------------------------------------------------------------------
内存或硬盘(尤其是系统所在的盘符)不足导致编译失败,这主要出现在制作比较大的CHM时,您不妨关闭一些程序或整理出更多的磁盘空间再编译。
版权所有 |