I've seen a number of places recently that offer online HTML API documentation and also offer downloadable (usually .chm) help files.

I really love using .chm help files, mainly because of the index tree on the left.

What are the best tools for creating those types of files? Is there something that would allow me to have a bunch of HTML files that can be put online and also compiled into a .chm?

edit (expanding the scope of my original question)

All of the tools below look interesting, especially sandcastle which I'm downloading now.

Are there any command-line tools for Linux that do this?

+14  A: 

Sandcastle, Microsoft's replacement for the long-lost nDoc, works pretty well.

Greg Hurlman
+1  A: 

I've been using a product called MadCap Flare for about a year now. It creates several types of help files and allows you to fully customize all outlooks. It also allows you to specify what is for print and non-print (web vs word) help to allow you to show styling's differently.

Not too expensive either.


Brian Childress
+6  A: 

+1 for sandcastle. Especially when coupled with the Sandcastle Help File Builder (SHFB) utility (Google should return a hit or two for it, but it is sensitive to the version of sandcastle)

+1  A: 

I've been using Help Maker for a couple of months and I'm very satisfied with its capabilities. It's free!

Mario Marinato -br-
+3  A: 

Help and Manual is among the best tools for writing help files of all sorts. The main reasons I like it are:

  • Works as I'd expect it to, feeling similar to Microsoft Word.
  • Supports output in HLP, CHM, HTML and PDF, allowing me to have a single source for all my documentation.
  • You have immense flexibility in the layout and design of the PDF manual.

Worth taking a look:

Tim Sullivan

We are happy with Doxygen for this purpose:

Doxygen is a documentation system for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D.

+4  A: 

Docbook. Although Sandcastle may be better-suited and easier to use for certain kinds of API documentation, Docbook allows you do do pretty much everything anyone would ever want to do with documentation. It supports a multitude of output formats, CHM being one of them.

Johannes Passing

FAR is a really good tool for creating CHM files. Just throw a bunch of html files to it and you'll have a CHM file ready in seconds.

+1  A: 

For a .NET project, I'd say Sandcastle with the Sandcastle Help File Builder, as that makes it easy to add additional, non-API doc files while still providing the full power of both CHM and MS Help 2.

For other projects, Sandcastle and SHFB are overkill, and Doxygen does the job fine. It's all a matter of the right tool for the right job.

Chris Charabaruk
+2  A: 

The MS HTML Help Workshop is basic, but once you have a 'standard' project file then you're made. You can compile files from the command-line so can easily include it in builds.


pauldoo pointed at Doxygen, but it actually uses Microsoft's HTML Help Workshop to get the file compiled.

I doubt you will find an Unix tool for this, since CHM is Microsoft proprietary, and probably not documented. Although programmers can do wonders (see XLS readers, for example), but there might be lack of interest for this format. You can use Wine, I suppose. Or Mono for .Net tools.

I had a brief look at Sandcastle page, it looks like a Doxygen for .Net. Interesting but I don't know if it is usable for generic HTML (like user docs).

There is a CHM spec on the GNU site. Free Pascal has a compressor, which afaik is endian and 64-bit safe.
Marco van de Voort
+2  A: 

I recommend Sandcastle - I manage this project for Microsoft. You are welcome to reach me through Codeplex site.


+4  A: 

I've quite enjoyed using HelpNDoc

We switched from Help And Manual and now use it for most of our applications. It's free for personal use as well...

+1 helpndoc deserves to be noticed for its intuitive use. It can also produce word, pdf, and chm formats as well.

I'm very pleased with Doc-to-Help. I create a user manual in Word, use Adobe Acrobat to create a beautiful PDF then use Doc-to-Help to create a CHM file from the Word document. When revisions are needed, I make them in Word, then redo the PDF, then open my Doc-to-Help project and it's one button click to regenerate the CHM file.

+1  A: 

I've had reasonably good luck with hhc aka Html Help Workshop. The trick is to front-end it with appropriate tools so that the compiler has the necessary content to make nice help files. You might want to check out the docbook toolchain for creating htmlhelp if you're looking for free. See the html help section of the DocBook XSL: The Complete Guide for some ideas.

That said, I wouldn't say learning docbook workflow particular on windows qualifies as "non-challenging" so take it for what it is. I think most windows help authors use tools likeRoboHelp.

I've used robohelp with good results.
+3  A: 

I've tried a few free tools, and can't really recommend any from a productivity point of view. None of then come near Help & Manual, which is not free but worth every penny.

If you must use FOSS tools, you might consider going the DocBook way - there is a good article here on using FOSS tools with DocBook to generate various formats, including CHM files.


May I humbly suggest to try ImmDoc.NET - a simple project I've developed some time ago and recently published on CodePlex. It is light-weight, very easy to use and supports .NET 2.0. It can also create CHM output.