关于语言不可知论:Windows 帮助文件 – 有哪些选项?

关于语言不可知论:Windows 帮助文件 – 有哪些选项?

Windows Help files - what are the options?

在过去,帮助不是微不足道的,而是可能的:生成一些带有特殊标签的时髦 .rtf 文件,通过编译器运行它,你会得到一个运行良好的 WinHelp 文件 (.hlp)。

然后,微软认为 WinHelp 不再时髦和酷,并转而使用 CHM,直到他们实际上从 Vista 中删除了 WinHelp。

现在,CHM 可能不错,但每个尝试在网络上打开 .chm 文件的人都会知道由安全限制引起的漂亮的"网页导航已取消"屏幕。

虽然有一些方法可以使 CHM 脱离网络工作,但这并不是一个好的选择,因为当用户按下帮助按钮时,他需要帮助,而不必进行一些时髦的设置。

底线:我发现 CHM 绝对无法使用。但是由于 WinHelp 也不再是一个选项,我想知道有什么替代方案,尤其是在与我的应用程序集成时(即对于 WinHelp 和 CHM,有一些功能可以让您直接跳转到某个主题)?

PDF 的缺点是需要 Adob??e Reader(或者是没有多少人使用的更轻量级的阅读器之一)。我可以接受这种观点,因为这是当今的一种标准,但你能告诉它可靠地跳转到给定的页面/锚点吗?

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

编辑:我希望创建自己的帮助文件。由于我是"无需设置,只需提取并运行"理念的粉丝,我过去曾多次遇到过这个问题,因为我的许多用户会从网络上运行它,这正是导致这个问题的原因。

因此,我正在寻找一种更强大且面向未来的方式来为我的用户提供帮助,而无需为我制作的每个应用程序编写不同的帮助系统。

CHM 是一种非常好的格式,但是 Security Stuff 使它无法使用,因为帮助系统应该为用户提供帮助,而不是产生更多问题。


HTML 将是下一个最佳选择,只有当您从公共网络服务器提供它们时。如果您尝试将其与您的应用程序捆绑在一起,那么所有文件(和图像(和样式表(和...)))都会使 CHM 看起来像是来自上帝的礼物。

也就是说,当实际捆绑在安装包中时(而不是通过网络提供服务),我发现 CHM 文件运行良好。

OTOH,关于 CHM 文件的另一个陷阱:即使您尝试打开本地磁盘上的 CHM 文件,如果您最初从某个地方下载它,您也可能会遇到安全块,因为该文件可能被标记为"来了"从外部来源"获得时。


我不喜欢 html 选项,实际上是通过压缩和索引它们从纯 HTML 转移到 CHM。甚至在少数非 Windows 客户上使用它们。
它简单地解决了人们将它放在网络上的持续小故障(嵌套深度有限,奇怪的锁定效果),杀毒软件在包含 30000 个 html 文件的目录中死亡,以及在旧系统上安装时需要 20 分钟的解压时间,浏览器安全区和功能,安装程序中所需空间的错误计算等。

然后我什至不包括开始"纠正"它们的人、具有错误"集成"尝试等的第 3 方产品、抱怨缓慢(浏览器启动)

随着操作系统和硬件的改进,我们都等了好几年,直到问题消失,但问题不断出现,种类繁多,足够了。我们找到了 chmlib,并决定如果操作系统提供的那些停止工作并切换,我们可以永远使用基于此的东西作为简单的外部阅读器的转义。

同时我们也有自己的编译器,所以我们是免费的,面向未来。这并不意味着我们永远不会改变(使用本地网络服务器的解决方案现在似乎最受欢迎),但至少我们有一个选择。


这取决于将在线文档导入到您的产品中的方式,一个好的文档基础架构可能很难建立,但一旦完成就会得到回报。这是我们的做法 -

  • 帮助源 DITA 兼容 XML,存储在 SCC (ClearCase) 中。
  • 帮助编辑 XMetal
  • 帮助编译,自定义 Open DITA Toolkit,带有自定义 Perl/Java 预处理
  • 帮助在编译时交叉引用应用程序资源、.RC 文件等
  • 来自单一来源、PDF、CHM、Eclipse 帮助、HTML 的帮助可交付成果。
  • 单一来源存储库为具有数千个共享主题的多个产品 10 提供帮助。

根据您的描述,我会查看 Eclipse 帮助,集成到 .NET 或 MFC 应用程序中并不简单,您基本上必须进行帮助映射以将请求解析为 URL,然后将 URL 触发到 Eclipse 帮助package器或浏览器。


如果您不想使用安装程序并且不希望用户执行任何额外的步骤来允许 CHM 文件通过网络,为什么不回退到 WinHelp? Vista 不包括开箱即用的 WinHlp32.exe,但可免费下载用于 Vista 和 Server 2008。


我们的软件既在本地分发给客户端,又通过网络共享提供服务。我们选择生成一个 CHM 文件和一组 HTML 文件,以便从网络上提供服务。本地启动程序的用户使用 CHM 文件,而从网络共享获取程序的用户必须使用 HTML 文件。

我们使用帮助和手册,因此可以轻松地从同一源项目生成两种类型的输出。 HTML 文件还包含搜索功能,并且不需要 Web 服务器,因此虽然它不是最佳解决方案,但可以正常工作。

到目前为止,Windows 的所有单文件类型似乎都以某种方式被破坏了:

  • WinHelp - 已过时
  • HtmlHelp (CHM) - 在 Vista 上已过时,不能通过网络共享工作,除此之外真的很好用
  • Microsoft Help 2 (HXS) - 这似乎一直有效,直到它没有,损坏的索引或类似的,这被 Visual Studio 2005 及更高版本使用,作为一个例子

问题是如何生成自己的帮助文件,或者最好的帮助文件格式是什么?

就我个人而言,我认为 CHM 非常出色。设置机器时我做的第一件事就是下载 CHM 格式的 PHP 手册 (http://www.php.net/download-docs.php) 并在 Crimson Editor 中为其添加热键。因此,当我按下 F1 时,它会加载 CHM 并搜索我的光标所在的单词(非常适合快速功能参考)。


我认为我们最终要为我们的应用程序使用的解决方案是自己托管帮助文件。这使我们能够立即访问文件并使其保持最新状态。

我的计划是将内容加载到大量 XML 文件中,每个文件都包含特定项目的帮助。此 XML 将包含指向其他 XML 文件的链接。我们会根据需要使用 XSLT 来显示内容。

根据许可,我们可能会构建一个特定于客户的 XSLT 文件,以便根据他们的需要定制外观。我们可能还需要能够仅显示针对我们产品的特定版本的帮助,这可以通过过滤掉 XSLT 中的内容来完成。


PDF has the disadvantage of requiring the Adobe Reader

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


如果您正在执行"只需提取并运行",那么您将遇到安全问题。如果您是运行 Vista(或更高版本)的用户,则尤其如此。您是否有理由避免将应用程序打包在安装程序中?使用安装程序可以缓解"外部源"问题。您可以毫无问题地使用 .chm 文件。

我们使用 InstallAware 来创建我们的安装包。它不便宜,但非常好。如果您关心成本,WIX 是开源的并且非常强大。 WIX 确实有一个学习曲线,但它很容易使用。


我使用了一个名为 AuthorIT 的商业包,它可以生成许多不同的格式,例如 chm、html、pdf、word、windows help、xml、xhtml 以及一些我从未听说过的其他格式(dita 响铃吗? ?)。
它是一个面向技术文档编写者需求的内容管理系统。
优点是您可以使用和重复使用相同的内容来构建一组指南,然后以不同的格式生成它们。

因此,与选择 chm 或 html 或其他任何问题有关的底线是,如果您使用它,您不会被锁定在给定的格式中,但您可以提供几种用户可以选择的格式,您甚至可以随心所欲地添加更多格式,无需额外费用。

如果您只有一个创建指南,那将不值得您花时间,但如果您有要管理的文档集,那么据我所知,这是最好的。他们的支持也很有帮助。


推荐阅读