This content has been marked as final. Show 10 replies
So, I need to add the Top most project's TOC to all of the sub projects, then recompile?
I will try that out, thanks.
This did not work as I expected, but I may be doing it wrong. Here is the actual structure of what I am doing:
I have multiple .chm files
Each of the above CHM files is merged into one .chm named SubParentA.chm. I have the following SubParent CHM files:
Each of the SubParent CHM files are merged into the Parent.chm. What I did was I took A.chm and added the SubParentA.chm's hhc file, and attempted to recompile.
The result was a copy of SubParentA.chm, with the A.chm missing. In its place was an infinite breakout of SubParentA.chm.
Did I not understand what I was supposed to do there?
I don't believe that adding one help file's TOC to another help file will fix the problem that you reported in your initial message. As far as that problem is concerned, it appears that you're coding the hyperlinks correctly. They should be in this form:
<a href="ms-its:TargetHelpFIle.chm::/path_to/topic.htm">Text that user clicks</a>
where the "ms-its:" prefix is optional.
It would be useful to know if this problem arises only when you open the help system from its associated application rather than Windows Explorer. This may give some clue as to where the problem lies. Can you also verify that the locations of the help files are correctly registered (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\HTML Help)?
The techniques for referencing one help file's TOC in another help file don't really serve any purpose other than to make the referenced TOC visible in the second file's navigation pane. So:
1) In the TOC of a master help file, you might add an Include statement to merge the contents of a slave file's TOC into the master's.
2) In the window definition of a slave help file, you might specify that the TOC file to use is that of the master help file. This makes the TOC of the master help file (and therefore the contents of the entire help system) accessible to anyone who opens the slave file.
Further to merging the parent into the sub project - this functionality works a treat when done in HTML Help Workshop, but results in the infinite loop problem when done in RH - I think it was okay in RH2002 and was subsequently "broken" in X4 (possibly X5, but I've lost track of my versions).
With ehelp in/just finished its deaththroes and a fix unlikely, we implemented solution #2 here:
Helpware - Context IDs with Merged Help
Note: we couldn't get redirect.xhtm to be excluded from search etc, so ours is named redirect.1.xhtm
Opening the sub help files individually (outside) the program will only show the TOC of that help file, with no indication that it is related to any others. The inter-chm links still work within the topics, but the appropriate TOC won't display.
Within the app, the parent chm file is the only chm file opened, ensuring the sub chm TOCs always display. Context calls are redirected through an ini file and special redirect topic in the parent chm.
Because we have many large products that may or may not be available depending on who has what installed, we keep our IDs in the individual projects and generate separate ini files containing the mappings.
SubA.chm has a corresponding ini file SubA.ini which contains references like:
Our developers kindly wrote a batch file that converts the Robohelp MAP ID report text output to a nicely formatted ini file, so all we have to do is assign IDs in RH, run the report and run the batch file.
Hopefully one of the solutions on this page can be of use.
Also, perhaps submit this functionality to the Adobe wishlist - I'll have to remember to do that myself.
Adobe Feature Request Form
Unfortunately, because of the way the old help system was for the application, there was no context sensitive help setup. Even when I get these files completely done, it is unlikely that we will actually have context sensitive help in our application (a shame really, but a fact).
What I am doing to get this behavior is opening the topmost project's .chm file in Windows Explorer. By the way, I am using Vista Ultimate for my testing, if that matters at all.
I have ensured that all of the .chm files are properly referenced in registry. All of the files are stored in the following folder on the C:\ drive:
I have tried to organize the folders so that they are not all just in one folder. To test out a few things, I have even lumped all of the .chm files into the same folder, and it does not have any positive effects.
Thanks for the information!
So, do I need to be doing this in HTML Help Workshop? Or can I continue to use RoboHelp for this? Also, each time I open a project in the HTML Help Workshop, it asks if I want to save my files, will saving anything there adversely effect how RoboHelp uses the files?
Thank you everybody for your help.
Another note on this.....
I found out that this only really happens on the deeply merged projects. Let me explain that a bit more:
As I explained before, I have several 'base' projects, several sub-parent projects, and a master project to hold them all together. I have a few sub-parent projects that do not have any child projects in them (I didn't need to break those down at all).
When I click a link that links two projects that are on the same level, in my structure, I get no lag or delay. So all the links between all the sub-parent projects work properly, all the links between base projects work fine. The links between base projects, to a sub-parent project however, shows the problem that I am seeing.
I run into the same (or very similar) problems when I try to reproduce your issue — always when linking to a .chm file that is higher up in the hierarchy. So, it would appear that just registering all the help files may not be enough to permit you to link seamlessly between them when they are stored in different folders.
My guess is that you need to give the help file that contains the hyperlink some "advance knowledge" of the file that it is to link to. You can achieve this by doing either or both of the following:
1) Changing the window definition of a child help file so that it displays the TOC of its parent rather than its own TOC. This is the technique that is described in the "Step 3 - Slave Windows Definitions" section of the article to which Colum referred.
2) Adding the parent help file to the child's Merge Files list. The section called "Step 2 - The [MERGE FILES] statement" in the Helpware article is describing this technique.
I'd guess that you can perform both these activities in RoboHelp, but as I'm not currently a RoboHelp user I can't confirm this.
Instead of "several 'base' projects, several sub-parent projects, and a master project to hold them all together," might you be bettor off simplifying things?
That is, make all projects equal children and do your indented structuring in the TOC of the master? I haven't done merged .chms in years, but this method works well in WebHelp output. You could try something with copies of just a few as a test.
Apologies, I should have clarified my explanation. The only work we did in HTML Help Workshop (HHW) while investigating the functionality, was to set the parent/child and child/parent merging, then compiling in HHW. All editing was performed in RH.
Unfortunately - and the main reason we implemented a separate workaround - was that none of the nifty RH functionality like conditional tags work when you compile through HHW. I don't believe saving in HHW adversely affects the RH code, but from memory I think RH does wipe out the merging info, so that has to be done each time. (I'm not completely certain of this, as we worked on it several years ago, and I've lost the brain cells that dealt with the issue )