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

回到过去,帮助不是微不足道的,但可能:使用特殊标记生成一些时髦的.rtf文件,通过编译器运行它,并且得到一个实际上运行良好的WinHelp文件(.hlp)。

然后,微软决定,WinHelp已经不再stream行,转而使用CHM,直到他们真的从Vista中砍掉了WinHelp。

现在,CHM也许不错,但是每个试图在networking上打开.chm文件的人都会知道安全限制导致的“导航到网页被取消”的好处。

虽然有办法使CHM在networking上工作,但这不是一个好的select,因为当用户按下帮助button时,他希望得到帮助,而不必进行一些时髦的设置。

底线:我发现CHM绝对无法使用。 但是随着WinHelp不再是一个选项,我不知道什么是替代品,特别是当涉及到我的应用程序集成(即WinHelp和CHM有function,让你直接跳到一个主题)?

PDF的缺点是需要Adobe Reader(或者一个不太常用的轻量级的)。 我可以接受这种看法,因为现在这是一种标准,但是你能否可靠地告诉它跳转到给定的页面/锚点?

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

编辑:我正在创build我自己的帮助文件。 由于我是“没有设置,只是提取和运行”哲学的粉丝,过去我曾多次遇到过这个问题,因为我的许多用户都会将其从networking上运行,这就造成了这个问题。

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

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

HTML将是下一个最好的select,只有如果你从公共Web服务器提供服务。 如果您试图将其与您的应用程序捆绑在一起,所有的文件(和图像(和样式表(和…)))将使CHM看起来像来自上帝的礼物。

也就是说,当实际捆绑在安装包中时(而不是通过networking服务),我发现CHM文件很好地工作。

OTOH,关于CHM文件的另一个缺陷:即使你试图在本地磁盘上打开一个CHM文件,如果你最初从某个地方下载了它,你可能会遇到安全块,因为该文件可能被标记为“来自外部源”当它被获得。

我不喜欢html选项,实际上通过压缩和build立索引来从纯HTML移到CHM。 甚至可以在less数非Windows用户上使用它们。 它只是解决了人们在networking上的不断破坏(嵌套深度有限,奇怪的locking效果),死于具有30000个html文件的目录中的杀毒软件,以及在较旧的系统,浏览器安全区和function,安装程序中所需空间的错误计算等。

然后,我甚至不包括那些开始“纠正”他们的人,第三方产品的错误“整合”尝试等等,抱怨慢(浏览器启动)

随着操作系统和硬件的改进,我们都等了好几年的时间,但问题不断出现在一个令人尴尬的数量上,足够了。 我们find了chmlib,并决定我们可以永远使用一些基于这个作为逃生的简单的外部阅读器,如果操作系统提供的停止工作和切换。

同时我们也有自己的编译器,所以我们是MS免费的面向未来的。 这并不意味着我们永远不会改变(现在本地networking服务器的解决scheme似乎最受欢迎),但至less我们有一个select。

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

我们使用“ 帮助和手册” ,因此可以轻松地从同一个源项目中生成两种types的输出。 HTML文件还包含searchfunction,不需要Web服务器,所以虽然不是最佳的解决scheme,但工作正常。

到目前为止,Windows的所有单一文件types似乎都以这种或那种方式被破坏:

  • WinHelp – 已过时
  • HtmlHelp(CHM) – 在Vista上已经过时,不能从networking共享中工作,除此之外非常好
  • 微软帮助2(HXS) – 这似乎工作正常,直到它没有,损坏的索引或类似的,这是用Visual Studio 2005及以上,作为一个例子

如果您不想使用安装程序,并且您不希望用户执行任何额外的步骤以允许networking上的CHM文件,为什么不回到WinHelp? Vista并不包括WinHlp32.exe,但它可以作为 Vista和Server 2008 的免费下载 。

这取决于如何将在线文档导入到您的产品中,一个好的文档基础架构可能会很复杂,但是一旦完成,它就会得到回报。 这是我们如何做到的 –

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

从你所描述的内容来看,我将看到Eclipse帮助,它不是简单的集成到.NET或MFC应用程序中,你基本上必须做帮助映射来解决对URL的请求,然后将URL发送到Eclipse帮助包装器或浏览器。

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

就我个人而言,我发现CHM是优秀的。 我在安装机器时所做的第一件事就是下载CHM格式的PHP手册( http://www.php.net/download-docs.php )并在Crimson Editor中添加一个热键。 所以当我按下F1加载CHM并执行我的光标所在的单词search(很适合快速函数参考)。

如果你正在做“只是提取和运行”,你将会遇到安全问题。 如果用户正在运行Vista(或更高版本),则尤其如此。 有没有一个原因,你为什么要避免打包你的应用程序内安装程序? 使用安装程序将缓解“外部来源”问题。 您将能够使用.chm文件没有任何问题。

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

PDF有需要Adobe Reader的缺点

我在家里和工作上使用Windows上的福昕阅读器 。 很小很小很快打开。 当您想知道a80000326.pdf究竟是什么以及为什么会堵塞您的文档文件夹时,非常方便。

我认为我们最终将为我们的应用程序提供的解决scheme是自己托pipe帮助文件。 这使我们可以立即访问这些文件并使其保持最新状态。

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

根据授权的不同,我们可能会构build一个客户特定的XSLT文件,以便根据需要调整外观和感觉。 我们可能需要能够只显示我们产品的特定版本的帮助,这可以通过在XSLT中过滤掉东西来完成。

我使用了一个名为AuthorIT的商业软件包,可以生成许多不同的格式,比如chm,html,pdf,word,windows help,xml,xhtml以及其他一些我从来没有听说过的东西。 这是一个面向技术文档编写者需求的内容pipe理系统。 优点是可以使用和重复使用相同的内容来构build一组指南,然后以不同的格式生成它们。

所以相对于selectchm或者html等问题的底线,如果你使用的是这个,你并没有被locking到一个给定的格式,但是你可以提供几个用户可以select的格式,你甚至可以添加更多的格式随着你走,没有额外的成本。

如果你只有一个指南来创build它不值得你的时间,但如果你有一个文件集pipe理,那么这是我所知最好的。 他们的支持也是非常有帮助的。