Are we talking about merged webhelp or merged hmtl help (chms)?
Merged HTML chm files
I think if you copied the master project's CHM into the subproject's !SSL! folder it might work, but I've never had an occasion to want the "merge" to work both ways.
There must be more to the process than just copying the master project's CHM file to the subproject's SSL folder - the two CHM files will be distributed together so they are always together anyway. But to answer that, I don't get the master TOC in the subproject CHM when I open the subproject CHM when the two are in the same location.
Do I have to set up the subproject's Window parameters or copy the master project's TOC into the subproject.... or both, or ...
I haven't tried it in a few versions, but this functionality got broken in about X3. The only way around it was to compile in MS HTML Help Workshop, which wasn't much use if you wanted to use any RH specific features, like build tags.
NOTE: the hyperlinks between projects should work fine. I'm reasonably sure the problem is only related to the TOC.
(For those who are curious, in HHW and RH2002, if you merge the main project into the sub project in addition to merging the sub into the main, opening either project displays the full TOC. From about X3, you get really funky recursive TOCs happening if you try this.)
Having said that, if you are using context sensitive help, it is possible to work around it if you can get the developers to custom-code the help call in the app. If this is something you are interested in, let me know and I can post my non-technical explanation of what we do.
To start out with the basic stuff: you have to use the same window name starting with $globaL_ in all projects.
In the slaves, open the Advanced Properties dialog box of the windows definition, and enter the Master.chm::/Master.hhc in the field Table of Contents, where Master ist the name of your master's CHM.
After compilation you have to copy the master and the slaves to the same directory to test the result. If it does not work - you may have the ToC tab missing from the slave - check the HHP-files generated for the master as well as the slaves. There may be some absolute paths in there. In this case you may try deleting the approprate CPD-files and try again. If this trick doesn't work, it's better to do the final compilation of the CHM with HTML Help Workshop or FAR.
Hope this helps.
Thanks Amebr and Dirk Bock for the suggestions. Unfortunately, I haven't got it nailed yet.
I'm using conditional build tags and variables in both the master and slave projects so I need to compile in RoboHelp. I used the $Global_master window name in the slave and added the Master.chm::/Master.hhc to the Advanced Properties for the slave's window and I don't get a TOC tab when the slave help is called. I don't know what I'm looking for in the HHP file in regards to "absolute paths".
When I add the master project to the TOC in the slave I get the recursive TOC entries problem.
I talked with one of our developers and he said we "could" go the context sensitive route but not in the time frame we have for this project... and I don't know what that involves from my side - I've always used the MAP IDs in RoboHelp.
So the problem as I understand it, stems from the MAP ID's not being merged which makes the application have to call the slave help file. The slave help file can only display a TOC for itself so the user can't navigate back to the master help file via the TOC - only through whatever links I have in the content. If the application calls the master help file for one of its own MAP IDs the help displays the full TOC and the user can navigate to everything (slave/master, they can't tell the difference - its all there).
Oh well, back to the drawing board...
Coincidentally the same thing happend to a new slave here today.
I've found several missing entries in the SSL file; all window references to the $global window were missing (m_strTocWindow, m_strIndexWindow, SSDefaultWindow).
But even adding these by hand and deleting the CPD wasn't successful, so I fell back to the trusted method and compiled the project using FAR. In this case it wasn't even necessary to change settings in the HHP, a simple compile did the trick.
So, download FAR from the Helpware.net site and compile the HHP generated by RoboHelp with it. If your problems persist you may send me a provate message and I can offer you some hints using FAR.
Hi, there seem to be a lot of people who know the slave with master toc (discussed in this stream and many others) doesn't work in Robohelp, & users must have reported it? As a new user with previous experience of other chm builders, I have had an anguished 2 months trying to explain to Adobe my problem, which they initially said wasn't possible, then eventually agreed it doesn't work & I have to add a feature request. If many users know, why don't Adobe?
When you say decompile, I assume you mean rebuild avoiding Robohelp? I need to create the chm via robohelp to get the the additional RH features. I don't want to use another program to create my chm. I was just wondering whether everyone just found workrounds without actually raising the issue with Adobe?
No, you keep all the functionality of RoboHelp.
Briefly, what you must do is:
1. Build the ToC in the master, including references to the slaves.
2. Include the file master.hhc (the master ToC) as a baggage file in each slave.
3. Set up the window properties in each slave to use master.hhc as its ToC.
I presume you have already managed these steps. But the problem is that the file master.hhc is not correct; to get the correct version you have to decompile.
4. Compile the master in the normal way.
5. Decompile the master (see below).
6. Copy the decompiled master.hhc to each slave, overwriting the version you included in step 2.
7. Compile each slave.
You can automate steps 5 and 6 using a batch file, which will look something like this:
hh -decompile scratch master.chm
copy scratch\master.hhc C:\Projects\MyProject\slave1
copy scratch\master.hhc C:\Projects\MyProject\slave2
The command hh -decompile will extract all files from the CHM and place them in the directory scratch. The directory will be created if necessary, and old files will be overwritten.
You may be tempted to also use RoboHelp 7's batch compile option (rhcl command) in the batch file to automate steps 4 and 7; don't! Batch compile will mess up your [MERGE FILES] section (reported to Adobe as a bug).
I strongly recommend trying it on a test database before going "live".
One more thing; you must edit the ToC of the master so that all entries look like remote topics. That is:
* In RoboHelp, display the ToC
* For each entry, display the Properties. At the bottom of the window you see something like Link to: Some_Topic.htm
* Change this to read Link to: master.chm::/Some_Topic.htm (that's colon-colon-slash)
Repeat for each ToC entry, including Book with Link.
It is not as hard as it sounds; copy the string "master.chm::/", and then with one hand on your mouse and the other on Ctrl-V you can paste rapidly.
The reason for this is that, when you open slave.chm, topics in the master must be handled as remote.
Thanks for that extra bit. I thought htmls not displaying might be a limitation of this workround, but all is fine now complete with htmls.
Your thread is a bit old, but I am just trying to understand what you were doing, to determine whether it is something that I should be doing. I have inherited several small .chm's (slaves as you call them), which are in some places called by our products on their own. These slave .chm's are also combined into one big .chm (master). Now, when users open a slave .chm by itself (by clicking a Help button or whatever), they see only the TOC for that slave .chm. If they access the master .chm (by selecting Help from the product's main menu), they see all of the contents - TOC shows contents of the master plus contents of all the slave .chm's.
Are you saying in this thread that, by using the procedure explained, a user would open a slave .chm and see the TOC of the master .chm, thus be able to access all of the contents from the slave .chm? If this is a goal, why doesn't the product just access the master .chm alone? What is the point of having the individual slave .chm's in the first place? (And worrying about what their TOC shows?) Of course, I realize that if the product is already coded to point to the slave .chm's, there would be development work required to make a change, but other than that, is there a reason to do this?
Finally, is there a significant difference in RoboHelp HTML's behavior on this matter between X5 ans X7? Thanks very much for your reply. --GMc
> by using the procedure explained, a user would open a slave .chm and see the TOC of the master .chm, thus be able to access all of the contents from the slave .chm?
-- Yes, that is exactly what the procedure does.
> If this is a goal, why doesn't the product just access the master .chm alone?
-- The relevant help-topic is in the slave .chm. But once the user has entered the help-system, we want to provide ToC access to everything. User may follow cross-references and it helps navigation if the ToC continually shows where he is.
> What is the point of having the individual slave .chm's in the first place? (And worrying about what their TOC shows?)
-- The main reasons for using a master-slave structure are (a) partitioning the project to allow several authors to work on it, or (b) allowing reuse of the same topics for several products (or product variants).
As far as I know there are no significant differences between RH5 and RH7 as far as merging projects is concerned. But other forum members may know better.
Thanks for the clarification, Derek. As I suspected, there is not a really good reason for the project that I have inherited to be in multiple files and merged. Perhaps at one time in the past, there was a reason, but now there is not. It just adds a significant level of complexity - not only in working with RoboHelp, but in working with 40+ separate folders/file sets within ClearCase). I'll have to think about this...
I recently converted my winhelp project which contains multiple help files into html help using RoboHelp 8. I am having the exact problem described here. When a user asks for a help topic in on of the sub files the master TOC does not show. This worked no problem in my WinHelp project using RoboHelp 3 but I can't get it to work now. Is there an easy fix for this?
Only the solutions detailed above, as far as I know. (In RH 8 there might be a setting along the lines of "show toc in merged projects", but I have a feeling that might be webhelp - someone using that version might be able to confirm.)