Introduction

Help systems

Documentation. An essential part of any software. Plain human language description of complex software systems that helps non-programmers understand programs, how these programs work, their capabilities and how to achieve desired objectives using the software.

Good documentation is a boon to users, but bad documentation can be downright insulting. It is therefore essential that the users can easily find what they are looking for. To that end it should be organised in a logical manner, easily searchable, extensively linked and indexed.

Help systems vary widely between platforms and in time; man pages on unix, Info files on GNU/Linux, the MacOS help system, various systems for individual pieces of proprietry software, straight HTML, some failed attempts at cross-platform help, custom XML (e.g. DocBook) and several generations of help systems for MS' family of MS-DOS & Windows operating systems. DocBook already plays a huge role as a source format, mainly in book publishing and for software documentation on free/open *nix platforms, while the investment into web browsers during the browser wars and beyond has established HTML as a standard for end-product documentation, whether residing as individual files in a filesystem or inside a custom proprietry format. As a side note that is specification itself was written in DocBook XML and standard software was used to translate the source XML into the several formats that are available, including HTML Help.

MS' help systems

The table below shows the past, present & future of MS help systems.

MS' help systems MVPs, 19??; Far, 19??; Winterhoff, 19??
Name Files/Extension(s) Based on Generation Decompiler(s) Compiler(s) Viewer(s)
QuickHelp ??? ??? MS-DOS ??? ??? ???
WinHelp hlp, cnt, gid, fts, ftg, hpj, ann, bmk, WinHlp32.BMK RTF Previous. Win95 helpdeco HC30, HC31, HCP, HCRTF, HCW, MVC, MMVC, WMVC WinHelp and MultiMedia Viewers
HTMLHelp chm, chi, chq, chs, chw, its, col, hh.dat, hhcolreg.dat, hhp, hhc, hhk, hhs, stp HTML Current. Win98 - WinXP chmtools, istorage, HHA/HHC/HHW, HH HHA/HHC/HHW, hhm HH
MS Help 2 HxS, HxI, HxC, HxF, HxT, HxK, HxE, HxV, HxA HTML Next. Win?? ??? hxcomp dox
Help and Support Center (HSC) ??? ??? Embrace & extend. WinXP ??? ??? ???
More info on MS' help systems MVPs, 19??; Far, 19??; Winterhoff, 19??
Name More info
QuickHelp Back in the day of MS command lines before I was old enough to reach the keyboard.
WinHelp This had some features (good & bad) not yet present in HTML Help; annotation, weird compression & searching, nasty RTF and a bit of a clunky UI.
HTMLHelp The current generation of MS' help systems. Many of the features are not implemented in either the viewer, compiler, GUI authoring tools or a combination of all three. It is amazing what passes for 1.0 these days.
MS Help 2 This will probably be the finished version of HTML Help. Authoring tools are set to be released in 2003.
Help and Support Center (HSC) An effort to integrate all help into one location (not unlike Unix man pages).

HTML Help

The current generation of MS help systems is known as HTML Help, probably because it uses HTML as a content format and in some of its other files. This was first introduced in August, 1997 http://www.helpware.net/htmlhelp/hh_info.htm and was distributed with Win98 and Win2K. It uses the IE browser engine, with a special ActiveX control to provide extra capabilities to HTML pages.

The content resides in self-contained files called "Compiled HTML Help file[s]" (CHM). The HTML Help viewer (HH), compiler (HHC) and most decompilers (e.g. istorage) use an IStorage interface to access the virtual filesystem in the file. The virtual filesystem will be discussed in a later chapter and section. It is interesting to note that most of the file data in the filesystem is compressed in one big chunk with LZX (an LZ77 based compressor). The GUI authoring tools are known as HTML Help Workshop (HHW), which calls MS' compiler (HHC), which loads a dll (HHA) to do all the work.

HTML Help includes quite a few features that are useful to both the documentation author and user; table of contents, index, full-text search, bookmarks, context-sensitivity, custom navigation tabs, merged help and a simple UI.

HTML Help links: official website, HTML Help MVPs, far, Keytools, Matthew Russoto's CHM page, istorage.