.Chm file full-text search returning “no topics found”?

Riya Ghosh
5 min readMay 12, 2022

Using the .chm file has many advantages. It is relatively small in size, which makes it easily distributable with software packages. It also has a built-in search engine for looking up keywords that are present in the help and this does not require any internet connection — an important factor often taken into account in scenarios when an application needs to be deployed on servers having no internet access.

The .chm files are also easy to generate and with the availability of fully-featured Help Authoring Tools, the task has become effortless. Nevertheless, the often praised full-text search functionality can sometimes malfunction. In such situations, technical writers or authors are required to know how to troubleshoot the issue?

Please Note: The following discussions are done completely based on my encounter and the solutions that I resorted to following the recommendations of experts.

What to troubleshoot when FTS stops working in your .chm file?

An issue with FTS may arise after upgrading your Help Authoring Tool. In my case, it happened after I upgraded Robohelp HAT to version 2020. However, while looking up solutions, I realized that it is not just Robohelp alone. There are many other HAT users who are also facing a similar issue. If you are using Visual Studio, for example, you could also encounter or might have encountered a similar problem.

Take a look at the following points and check if your issue could be fixed.

  1. Install the MS HTML Help Workshop. Could be a compilation issue.

It could be a compilation issue and can be quickly resolved by installing the MS HTML Help Workshop, which is a .chm creation utility with basic features.

You can download the software from a reliable site and install it. Then generate a .chm file once more and test whether the FTS is returning any results. It should work.

What you need to understand is that the .chm file compilation is done by the component HHC.exe, which is part of the MS HTML Help Workshop.

Is this a prerequisite? Generally, the MS HTML Help Workshop is used in conjunction with a macro shell such as a Robohelp HTML or a Doc-to-Help. So if you are using a HAT, then the installed tool should also include the compiler. However, since I have encountered this problem after upgrading my Robohelp tool from an old version to the latest version 2020, I would like to point out that the hhc.exe does not get installed along with the tool like it used to before.

Installation Tip: The installation part is not difficult but if during installation you encounter a message that says, “This computer has a newer version of HTML Help”; don’t get worried. This just means that the installer tried and failed to install older versions of the runtime components that you already have.

2. Check if the Essential DLL files are properly registered

Installing MS HTML Help Workshop may not resolve your issue immediately and your next step is to verify if the essential DLL files are properly registered. As reported by the Adobe experts, an issue could arise because the essential DLL files that the compiler uses are missing or unregistered.

Registration Tip: The DLL files can be registered from the MJ Diagnosis tool if you are using it. Another way is to register the files through command prompt.

Following is the list of files that I found were missing after the installation of the Robohelp tool on my machine:

> %Windir%\SysWOW64\Hh.exe: Windows uses hh.exe to open CHM files. It is installed in the Windows directory.

> %Windir%\SysWOW64\Hhctrl.ocx: Provides access to all main HH functions and services. In HH 1.3 we now have all language-specific resources moved out into separate 28 language DLLs. Special Note: The default language, English, is always read from hhctrl.ocx, not from the English language DLL. This makes swapping languages on English NT4 & Win9x systems almost impossible.

> %Windir%\SysWOW64\Hhsetup.dll: The hhsetup.dll file originates from the software installed on your system. It is an executable file on your computer’s hard drive. This file contains machine code. If you start the software hhsetup on your PC, the commands contained in hhsetup.dll will be executed on your PC. For this purpose, the file is loaded into the main memory (RAM) and runs there as a hhsetup process (also called a task).

> %Windir%\SysWOW64\Itircl.dll: Underlying full-text search

> %Windir%\SysWOW64\Itss.dl: The itss.dll file handles the its: and ms-its: pluggable protocols along with the hard-wired mk:@MSITStore protocol. It is also used for both compressing and decompressing files — that’s either done automatically via the three protocols (decompressing) or via the IStorage interface that it supports (both compression and decompression).

3. Redistributing the DLL files

Installing MS HTML Help Workshop might solve the problem arising with your .chm file’s FTS. However, the issue will get resolved only on your local machine but not on the target user’s system.

According to Adobe expert, the Help Workshop should be installed only on the admin’s or the help author’s system. The user’s system just needs the Microsoft Help Viewer to view the .chm file.

If it is so, then the DLL files continue to be located in the local machine where the Help Workshop has been installed. Since the Dll files are not distributed across to the user system, the FTS in the .chm will continue to return “no topic found” result.

Deployment Tip: Choose a deployment method that will be convenient for redistributing the Dll files to the system user’s end.

Concluding Note

I faced a similar situation and it was then that I realized that the Dll files were only locally made available but went inaccessible when the updated .chm file was sent for integration. As long as I was searching the keywords only on my local machine, where Robohelp HAT was installed, the .chm FTS was working fine. However, after I installed the application build where the .chm file was integrated and clicked on the Help link to open and check whether the FTS was working, it returned the “no topics found” result.

As I write this blog, I am still in the process of finding out more about the .chm file compilation procedure. I might come back to update this article with more information from my ongoing findings. Meanwhile, I hope whatever I have provided in this article would be of some help to anything who has encountered a similar problem when using the .chm file.

--

--