Windows帮助文件-有哪些选项?

39

从前,帮助文件不是件容易的事情但还是有可能的:生成一些带有特殊标记的花里胡哨的 .rtf 文件,通过编译器运行它,你就能得到一个真正好用的 WinHelp 文件 (.hlp)。

后来,微软认为 WinHelp 不够时髦了,转而使用了 CHM,甚至在 Vista 中将 WinHelp 给剔除了。

现在,CHM 可以是不错,但任何试图在网络上打开 .chm 文件的人都会遇到由于安全限制而导致的漂亮的“导航到网页被取消”的屏幕。

虽然有方法可以让 CHM 在网络外工作,但这并不是一个好选择,因为当用户按下帮助按钮时,他想要的是帮助,而不是进行某些花哨的设置。

底线是:我觉得 CHM 完全不能用。但是既然 WinHelp 不再是一个选项,我想知道还有哪些替代方案,特别是在集成我的应用程序时(即对于 WinHelp 和 CHM,有函数允许您直接跳转到一个主题)?

PDF 的缺点是需要 Adobe Reader(或者更轻量级的阅读器,很少有人使用)。我可以接受这一点,因为这在现今已经是标准了,但你能可靠地告诉它跳转到一个给定的页面/锚吗?

HTML 文件似乎是最好的选择,然后你只需要处理不同的浏览器(CSS 等)。

编辑: 我想创建自己的帮助文件。因为我是“无需安装,只需解压缩和运行”的哲学的粉丝,所以我曾多次遇到这个问题,因为我的许多用户会在网络上运行它,这会导致正是这个问题。

所以我正在寻找一种更健壮和未来证明的方式来为我的用户提供帮助,而不必为每个应用程序编写不同的帮助系统。

CHM 是一个非常好的格式,但是那些安全问题使它不能用,因为帮助系统的目的是为用户提供帮助,而不是产生更多问题。

10个回答

14

如果您从公共网络服务器上提供服务,那么HTML将是下一个最佳选择。如果您试图将其与应用程序捆绑在一起,所有文件(以及图像(和样式表(和…)))将使CHM看起来像是神的馈赠。

话虽如此,当实际捆绑到安装包中时(而不是通过网络提供服务),我发现CHM文件可以很好地工作。

另外,关于CHM文件的另一个陷阱:即使您尝试在本地磁盘上打开CHM文件,如果您最初从其他地方下载该文件,则可能会遇到安全性阻止,因为该文件可能标记为“来自外部来源”。


1
是的,这种情况经常发生。即使是有经验的开发人员也可能会被绊倒。 - Cheeso
1
在考虑了几乎所有其他选项之后,似乎HTML文件确实是我的唯一选择,因为每一个其他的替代方案都存在严重的问题。 - Michael Stum
CHM解锁问题可以通过编程方式解决,即使您有自己的更新程序。(常规安装系统已经修复了它)请参见https://dev59.com/DlnUa4cB1Zd3GeqPb5lh - Marco van de Voort

5
我不喜欢HTML选项,实际上我已经从纯HTML转到了通过压缩和索引生成CHM文件。即使在一些非Windows客户端中也使用它们。 这样可以解决人们将其放在网络上时常常出现的小问题(嵌套深度有限,奇怪的锁定效果),以及在拥有30000个HTML文件的目录中防病毒软件死机、在旧系统上安装需要20分钟解压时间、浏览器安全区域和功能、安装程序所需空间的错误计算等问题。
此外,还有那些试图“修正”它们的人、第三方产品的故障“集成”尝试等等,抱怨速度慢(浏览器启动)的人更是不在少数。
我们都等了多年,期望这些问题随着操作系统和硬件的改进而消失,但这些问题仍然以惊人的数量和各种形式不断出现,我们受够了。我们发现了chmlib,并决定我们可以永远使用基于它的东西作为逃生工具,只要操作系统提供的读取器停止工作并切换。
与此同时,我们也有自己的编译器,因此我们可以自由选择未来的MS解决方案。这并不意味着我们永远不会改变(现在似乎本地Web服务器的解决方案更受欢迎),但至少我们有了选择。

3
这取决于在线文档对您的产品有多重要,建立良好的文档基础设施可能会很复杂,但一旦完成就会得到回报。以下是我们的做法 -
- 帮助源DITA兼容XML,在SCC(ClearCase)中存储。 - 帮助编辑XMetal。 - 帮助编译,使用自定义Perl / Java预处理的定制Open DITA Toolkit。 - 帮助源交叉引用应用程序资源在编译时,.RC文件等。 - 从单个来源提供可交付成果物,PDF,CHM,Eclipse Help,HTML。 - 单个源代码库为10多个产品生成帮助,共享数千个主题。
根据您的描述,我建议查看 Eclipse 帮助文档。将其集成到 .NET 或 MFC 应用程序中并不简单,您基本上需要进行帮助映射以将请求解析为 URL,然后将 URL 发送到 Eclipse 帮助包装器或浏览器。

3
问题是如何生成自己的帮助文件,还是什么是最好的帮助文件格式?
个人认为CHM非常优秀。在设置机器时,我首先要做的事情之一就是下载以CHM格式提供的PHP手册(http://www.php.net/download-docs.php),并在Crimson Editor中添加一个热键。这样,当我按下F1时,它会加载CHM并对我的光标所在单词执行搜索(非常适合快速函数参考)。

3
我们的软件既可以分发到本地客户端,也可以从网络共享中提供服务。我们选择生成CHM文件和一组HTML文件以供网络使用。本地启动程序的用户使用CHM文件,而从网络共享获取程序的用户必须使用HTML文件。
我们使用Help and Manual,因此可以轻松地从同一源项目生成两种类型的输出。HTML文件还包含搜索功能,不需要Web服务器,虽然这不是最佳解决方案,但效果很好。
迄今为止,Windows的所有单文件类型似乎都有某种问题:
- WinHelp - 已过时 - HtmlHelp(CHM)- 在Vista上已过时,不能从网络共享中工作,除此之外非常好用 - Microsoft Help 2(HXS)- 这似乎一直正常工作,直到它出现了问题,如索引损坏等,Visual Studio 2005及以上版本使用此功能

我不知道在Vista上CHM已经过时了。这是官方的吗?有链接吗? - PhiLho
1
Vista有一个后继者(平台协助),但它并不是免费提供的,而且现在在Windows 8时代仍然不太流行。 - Marco van de Voort

3
如果您不想使用安装程序,并且不希望用户执行任何额外步骤以允许在网络上使用CHM文件,为什么不退回到WinHelp?Vista默认不包括WinHlp32.exe,但是它可以在下载页面中自由获得,适用于Vista和Server 2008。

因为这样用户就需要执行额外的步骤来允许HLP文件,即使是在本地。 - Roger Lipscombe
没错。问题在于帮助文档通常在用户使用应用程序时遇到问题时需要,因此在用户和帮助文件之间增加任何额外步骤都不是用户友好的 :-( 否则我很乐意回退到WinHelp。 - Michael Stum

2
我认为我们将要采用的解决方案是自己托管帮助文件。这样可以立即访问文件并使其保持更新。
我的计划是将内容加载到一系列巨大的XML文件中,每个文件都包含特定项目的帮助。这些XML将包含链接到其他XML文件的链接。我们会使用XSLT根据需要显示内容。
根据许可证的不同,我们可能会构建一个特定于客户端的XSLT文件,以使外观和感觉符合他们的需求。此外,我们可能需要仅显示特定版本产品的帮助,这可以通过在XSLT中过滤内容来实现。

2
如果你只是“提取和运行”,那么你将会遇到安全问题。特别是当用户在运行Vista(或更新版本)时,这一点尤为明显。你是否有避免将应用程序打包在安装程序中的原因?使用安装程序可以解决“外部来源”的问题。你将能够无任何问题地使用.chm文件。
我们使用InstallAware来创建我们的安装包。它不便宜,但非常好用。如果成本是你的关注点,WIX是开源的,而且相当强大。WIX确实有一个学习曲线,但很容易使用。

是的,我想避免使用安装程序的原因是因为它们并不是必需的。我讨厌安装东西,因为总是会有很多混乱(注册表键、卸载项)与之相关,所以只要我没有任何外部依赖项、开始菜单条目等,我就不想使用安装程序,特别是如果它只是为了解决帮助系统中不必要的安全问题而需要。:( - Michael Stum

2

PDF有一个缺点,就是需要使用Adobe Reader

我在家和工作中都使用Windows上的Foxit Reader。它非常小巧,打开速度也很快。当你想知道a80000326.pdf是什么以及为什么它堵塞了你的文档文件夹时,非常方便。


1
我使用Sumatrapdf - 比Foxit Reader还要小!!! :) 它可以在这里找到http://blog.kowalczyk.info/software/sumatrapdf/,是一个独立的可执行文件...非常有用! ;) - t0mm13b

1

我使用一个商业软件包叫做AuthorIT,它可以生成多种不同的格式,比如chm、html、pdf、word、windows帮助、xml、xhtml等等,还有一些我从未听说过的格式(dita是个熟悉的词吗?)。 它是一个面向技术文档编写者需求的内容管理系统。 优点在于您可以使用和重复使用相同的内容来构建一组指南,然后以不同的格式生成它们。

因此,相对于选择chm或html或其他格式的问题,如果您使用这个软件,您不会被锁定在特定的格式中,而是可以提供几种用户可以选择的格式,甚至可以随着时间的推移添加更多格式,而不需要额外的费用。

如果您只需要创建一个指南,那么这并不值得您去做,但如果您需要管理一套文档,则据我所知,这是最好的选择。他们的支持也非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接