Reverse Engineering
What's covered?
Sometimes you only have the output files and nobody can locate the source files. It's not always possible to recover but this topic is designed to help where it is.
I have to emphasise the topic is about recovering projects created in Classic versions of RoboHelp. The methods described here will not work with the New UI versions of RoboHelp with one exception. If you have a CHM output, see CHM Help below and proceed to the point where you have an HHP file. Then try importing those using the HTML topic option.
Introduction
The first step must be a very thorough search for the source files. It is definitely worth the effort.
File Explorer search has improved but other tools such as Ultra Search are worth trying. Enlist the help of your IT guys as well. You really want to avoid the issues involved with the other options. Sometimes this problem occurs when an author has left and you have been given a new computer. Have IT wiped the old machine?
Frameless or Responsive Help
If frameless or responsive help was your only output, then I am sorry to say you are stuck. The best you can do is a manual rebuild.
- Access the output and copy the text into a new project via a text editor. What you don't want is the code behind the content. Yes that does mean you have to then apply the styles, rework tables and so on.
- Dropdowns and Expanding Text will need to be copied in separately.
- Snippets and Variables will just be text.
- See also "What Will Be Lost" below.
By now you will see why locating the source files is worth the effort.
WebHelp
Until recently you had two options, one was free and one you had to pay for.
The free option is Rick Stone's excellent topic on the subject. It was orginally on his RoboWizard site but that is no longer online. Rick kindly gave me access to the content so you can see a PDF version. The downside, as you will see, is it involves a lot of manual cleaning up. If you use this method, when you have recovered your project, come back here and see the section below on Loss Prevention. Some of the tips will be relevant for webhelp as well.
The paid option was to purchase a script from Help Essentials. I understand it also recovers map ids, the table of contents and the index from webhelp generated from RoboHelp X5 to RoboHelp 2019 Classic. It does not work with responsive outputs or with outputs created by RoboHelp 2019 New UI.
Update 30th December 2021. The Help Essentials site is no longer available but the scripts there are now hosted on this site and are free. See Scripts.
FlashHelp and Browser Based AIR Help
See the WebHelp section above. I believe scripts for these output types included in the package on the Help Essentials site but check with them first.
CHM Help
The simplest solution is to use the scripts on the Help Essentials site. See the WebHelp section above. This type of output though is relatively easy to recover yourself by following the steps below. The basics have been covered across a number of posts on various forums. What I have done here is explain them a bit more fully and provide some options.
It is important with these methods that where you have to define the name of the CHM file, you use the name of the file you are decompiling exactly as it is. Do not, for example change myhelp.chm to myhelp2.chm. If change the name of the CHM file during the process, the glossary and browse sequence files will also be renamed. The necessary files will be in your folder but they will not appear in the project and the glossary and browse sequences will not show in your project.
See What's Lost for information about context sensitive help and conditional tags. Any index words that were contained in the source html files and any Stop words will be lost.
Method 1 - Using FAR
If you have a copy of FAR, then you have the tools you need.
- Open FAR and click the Authoring tab.
- Click HH Utils.
- Click File | Open and browse to the CHM file
- Click Decompile, select Extract All and browse to the folder to which you want to extract the files (create a new folder for this).
- Click OK when advised the process is complete.
- Now you need to create an HHP file that can be used to create a RoboHelp project. Click the Express icon back on the Authoring tab.
- In the first field, enter or browse to the folder used in Step 4.
- In the second field, enter the Title as it appears in the name of the CHM file you are decompiling.
- In the third field, enter the default topic. If you don't know what it is, select any file, you can change it later.
- In the fourth field enter the same name as the CHM file you are decompiling.
- Click Create Help.
- Double click the HHP file that has been created to open a RoboHelp project.
Method 2 - Using Keytools
Pete Lees posted details of a free tool that decompiles the CHM file and creates the HHP file in one process. The tool is Key Tools and it was available from Ralph Walden's site - www.keyworks.net. That site appears to have been taken over by someone else and the official download is no longer there. If you want to download it from my site you can click here. Whilst I am not aware of any incompatibilities, it is your responsibility to ensure it works satisfactorily on your operating system.
- Create a folder for Keytools to create the new project.
- Open Keytools and select the decompile option.
- Enter or browse to the two folders requested.
- Click OK.
- When the process is complete, close Keytools and open Windows Explorer.
- Browse to the HHP file and double click it. A new RoboHelp project will be created.
- You will need to check for Broken links and generally make sure the project is as you want it.
Method 3 - Using HTML Help Studio
HTML Studio can be found on the Tools pod of RoboHelp. You can either point HTML Help Studio to the CHM or you can right click the CHM and select Convert to Source.
You will also need to download the HHP builder. Click here.
UPDATE 18 September 2017.
The HHP builder may report that CSH.DLL is missing. If it does, you should find one in C:\Program Files (x86)\Adobe\Adobe RoboHelp 2017\Redist. Copy that into the same folder as HHP Builder.
When you start HHP Builder it will ask you to browse to a folder where the HHP file is to be created and expect you to select the HHP file there. Of course there is no such file yet so if you click Build nothing will happen. In that dialog you need to add the name of the file you want created in the File Type field, removing the star from that field. The name must be the same as your CHM file name. Then click Build and the HHP will be created and you can open the project in RoboHelp.
Method 4 - The Man's Way
No pretty interface. Just enter this into a command prompt window, amended as necessary. You will also need to download the HHP Builder as described in Method 3.
hh.exe -decompile <target_directory> <path>\<filename>.chm
I have not tried this method but if Pete Lees says it works, it works.
What will be lost?
Conditional Tags
Conditional Build Tags will be lost but any text that had a conditional build tag applied will, surprisingly, still be in the topics although not displayed. Use a multi file find and replace tool and search on condition: to find the names of the tags. Then create new tags with exactly the same names as those you find. Right click them and you will see the associated topics listed.
Context Sensitive Help
The ability to retrieve this information from a CHM was lost in RoboHelp 6 if you follow Methods 1 - 4 above. However, you should check with your developers as should have a copy of the file that they can give you. Willam van Weelden's scripts do recover this information from a CHM, as well as the other outputs covered above.
Index Words and Stop Words
Any index words that were contained in the source html files and any Stop words will also be lost.
Index and TOC Lost
If you followed the instructions above but have still lost the index and table of contents, all is not lost. That is what I exactly what I found with a file that had been created using AuthorIt. Pete Lees identified the reason and recovering them is quite straightforward.
- Compile the help as extracted, that is without the TOC and index.
- Close RoboHelp and go to the root folder of your project. You will find two hhc files and two hhk files.
- Check the name of your xpj file, let's say it is yourproject.xpj.
- Look for yourproject.hhc and yourproject.hhk and delete those files.
- Locate toc.hhc and index.hhk and rename them as yourproject.hhc and yourproject.hhk.
- Reopen RoboHelp and you should find the TOC and index restored.
Loss Prevention
This section came about thanks to a brilliant suggestion from Pete Lees.
The previous section covers what most people will lose if they have to recover their source files from a CHM output. If you've been through that loss, then you may want to be better protected if the situation arises again.
I have listed below the various things that will be lost and the file that contains that information in a RoboHelp project. Pete's suggestion is that those files are added to baggage so that the procedures above will recover them.
Data |
How to protect yourself |
Stop List |
Add yourproject.stp to the baggage files. |
Map IDs / HHP file |
If you add the .h file(s) to the baggage files that may cause them to show up in the results of a full-text search. You could make copies of the .h files and change the file name extensions to something else (say, .xh), and then add these copies to the project baggage or you could zip up the files and add the .zip file to the baggage. However that is a manual task so it is prone to error. |
KLink and ALink keywords (that is, keywords embedded in the HTML source of topics) |
KLink and ALink keywords are keywords that you have embedded in the HTML source of topics, rather than in the hhk file. The way to protect yourself against losing these keywords is not to use them! It's a trade off between the reason for using these keywords (they are automatically included in any project to which you may copy these topics) and the downside if the source files are lost. That's a choice you have to make. |
Donations
If you find the information and tutorials on my site save you time figuring it out for yourself and help improve what you produce, please consider making a small donation.