We have an application that used to ship with WinHelp (.hlp) help files. As this causes problems with Vista and Windows 7 I have just re-engineered them to use the HTMLhelp (.chm) format. The application is modular - there is a standard version and then a developer kit that allows you to extend it. There is additional help associated with the developer kit, and the help for the standard functionality is split across several files.
I have successfully managed to get all the help files functioning in a single window, so that links between files do not pop up a separate help viewer. All the help files point to a shared master contents file (.hhc) which is compiled into one of the chm files, and this contents file in turn references a standalone hhc file containing merged contents definitions. This allows us to update the contents in line with the help files actually present on the PC - so that users without the developer extensions don't have links to non-existent topics. This is a much more complex mechanism than the one required for WinHelp, which simply ignored references to non-existent contents files.
This all works fine if you double click on any of the chm files in Explorer - you see the contents as desired, the merged index works, and topics are displayed correctly. However, if the help system is called by the application then the contents tab is empty (although the initial topic displays ok, the index is present and works).
I have established that this occurs when the "current folder" is not the same as the folder containing the hhc and chm files - does anyone know how to define a "merge" contents entry in an hhc file so that it always looks for a file in the same folder as the chm it is compiled into, rather than the current folder?