Copy link to clipboard
Copied
Problem
Browse sequences in our Microsoft HTML help (.CHMs) are missing after we upgraded from RoboHelp x5 (running WinXP Pro) to RoboHelp 9 (running Win7, 64-bit).
Background
We've been using RoboHelp x5 and RoboSource Control 2.3 version control for several years. Prior to 2012, our RoboSource Control server machine was a WinXP Pro VM session, while our 3 RoboHelp/RoboSource Control client (author) machines were physical WinXP Pro machines.
After the first of this year, our 3 client machines were replaced with Windows 7 Enterprise, 64-bit physical machines. In order to continue running RoboHelp x5, we created a Windows XP Pro virtual machine on each client machine; Robohelp x5 and the RoboSource Control 2.3 client software were then installed and run from the WinXP VM environment. Browse sequences were included in the many (at least 4 per month) CHMs that we compiled/generated during the several months that we ran in this environment without any issues.
We just (over the past few weeks) upgraded to Adobe's Technical Communication Suite 3.5 (RoboHelp HTML 9 and RoboSource Control 3.1). A new Windows 7 Enterprise, 64-bit VM was created for the RoboSource Control server installation, and we simply installed the RoboHelp 9 and RoboSource Control 3.1 client software directly on our 3 Windows 7 client machines. We did not remove the VM sessions from the client machines, but we don't run them either.
Since we upgraded RoboHelp to version 9 (which is also to say, started running RoboHelp in a true Windows 7 64-bit environment), none of our browse sequences appear when we compile/generate a .CHM in RoboHelp 9 and then launch the .CHM from anywhere OTHER THAN within the RoboHelp HTML application. If we launch the Help from within RoboHelp, using either the Generate Primary Layout function (and then view result) or the View Primary Layout function (HTML Help is our primary layout), the browse sequences appear and function properly.
I've already researched (including this forum and all the previous posts on this issue) and run tests, attempting to identify the cause and/or resolve the issue. The actual tests and results are listed after the next section (which provides technical details on what I believed to be the critical aspects of this issue within our environment; perhaps someone will spot something regarding the version of the HHActiveX.dll or a path/value for one of the registry settings).
Environment Technical Details
RoboHelp 9/RoboSource Control 3.1 Server
RoboHelp 9/RoboSource Control 3.1 Client Machines
RoboHelp x5 and RoboSource Control 2.3 Server
Troubleshooting Tests and Results
Test 1: Ran command line: C:\Windows\SysWOW64\HH.exe C:\Documents\DSISWHelp\DSISWHelp.chm
Test 2: Ran command line: C:\Windows\HH.exe C:\Documents\DSISWHelp\DSISWHelp.chm
Test 3: Ran command line: C:\Windows\winsxs\amd64_microsoft-windows-htmlhelp_31bf3856ad364e35_6.1.7600.16385_none_244ae8599e6d81bb\HH.exe C:\Documents\DSISWHelp\DSISWHelp.chm
Test 4: Ran command line: C:\Windows\winsxs\wow64_microsoft-windows-htmlhelp_31bf3856ad364e35_6.1.7600.16385_none_2e9f92abd2ce43b6\HH.exe C:\Documents\DSISWHelp\DSISWHelp.chm
Test 5: Deleted HHP, CPD, and created new HTML Help SSL definition. Opened project, compiled with new SSL, opened CHM from Windows Explorer via double-click.
Test 6: RoboHelp install again. Didn't see any "repair" options, so I ran the install over the existing one. Then deleted HHP, CPD, and created new HTML SSL definition. Compiled. Opened the CHM from Windows Explorer via double-click.
Test 7: Edited the browse sequences to see if that would trigger or set a flag. Note: I already compared the "flags" (it's actually a number sequence) in the RHwnd.apj file (via Notepad) to the "flags" in the RHwnd.apj file. While I don't know which one represents browse sequence enabling, the number sequences were identical. Note: I compared RHwnd.apj files pre- and post-Browse Sequence enabling (with no other changes), but the flag values were completely different (it's not a simple 0/1 flag).
Test 8: I copied older CHMs that were generated/compiled in RoboHelp x5 over to my local, Window 7 Enterprise, 64-bit, SP1, machine. Launched the CHMs from Windows Explorer by double-clicking on them.
Test 9: I browsed over our network (via Windows Explorer) to our old RoboHelp x5/RoboSource Control 2.3 server, and launched older CHMs that were generated/compiled in RoboHelp x5 and still sitting on that machine, by double-clicking on them.
Test 10: I logged on (via RDS) to our old RoboHelp x5/RoboSource Control 2.3 server (WinXP), and launched older CHMs that were created (and never upgraded) in RHx5 by double-clicking on them.
Test 11: I logged on (via RDS) to our old RoboHelp x5/RoboSource Control 2.3 server (WinXP), opened Windows Explorer on that machine, browsed over the network to our new RoboHelp 9/RoboSource Control 3.1 server (Win7), and then launched new CHMs that were generated/compiled in RoboHelp 9 by double-clicking on them.
Test 12: I logged on (via RDS) to our older RoboHelp x5/RoboSource Control 2.3 server (WinXP), copied CHMs that were generated/compiled on our new RoboHelp 9/RoboSource Control 3.1 server (Win7) in RoboHelp 9 over to the WinXP machine, and then launched them by double-clicking on them.
CONCLUSIONS
Copy link to clipboard
Copied
Wow, what a write up!
If you searched the forums you should have found a few references to the fact that you need to register the 64 bit version of HHActiveX.dll in order for browse sequences to work when running on a 64 bit machine.
The fact you see them when running the help from RoboHelp is because they are launching the 32 bit version of the help viewer and RoboHelp registers the 32 bit version of HHActiveX, not the 64 bit version.
Cheers... Rick
Helpful and Handy Links RoboHelp Wish Form/Bug Reporting Form Begin learning RoboHelp HTML 7, 8 or 9 within the day! |
Copy link to clipboard
Copied
Thanks for the response, Rick. I appreciate the feedback.
A few follow-up questions...
Copy link to clipboard
Copied
You should have two program files directories. The x86 directory is for 32bit applications and the other is for 64bit applications.
Copy link to clipboard
Copied
Correct. So, is it then simply a matter of installing RoboHelp in C:\Program Files (the 64-bit directory)?
Copy link to clipboard
Copied
Hello again
Hopefully Colum won't mind my offering a few answers here and there,
RoboFan wrote:
Thanks for the response, Rick. I appreciate the feedback.
A few follow-up questions...
- Can you confirm that neither the version of HH.exe, nor its file path matter?
Unsure what you mean by the version of HH.exe mattering. If you double-click a CHM file on a 64 bit Windows system, it appears that it automatically opens the 64 bit version of HH.exe. Short of having an installation routine of some sort that reconfigures the operating system to open the 32 bit version instead, I can't fathom a way that you would be able to influnce the behavior. Obviously, application developers are able to force this choice. I say that because after you compile and choose to View Result, RoboHelp opens the 32 bit version of the CHM viewer. Now whether this is behavior that is designed by the application developer or whether it's standard Windows behavior with RoboHelp being a 32 bit application is beyond me. Only Adobe can really say for sure what is going on.
- How do I identify/verify that an instance of HHActiveX.dll is the 32-bit version?
- How do I identify/verify that an instance of HHActiveX.dll is the 64-bit version?
I'm not sure there is a way. At least I'm not knowing a way. I think the best you can do is supply both versions and tell your installation team to register both. Then it shouldn't matter, no?
- Where can I obtain the 64-bit version of HHActiveX.dll?
- Based on my research, it appears that C:\Program Files (x86)\Adobe\Adobe RoboHelp 9\Redist on our 64-bit machines would be one such location. Can you verify this?
I think Colum answered that.
- Where should the 64-bit version of HHActiveX.dll that I subsequently register, reside (i.e., file path)?
Wherever you (or more precisely your installation team) decide to place it.
Likely you will think that answer is a bit snarky. But it's not intended to be that way. I'm just being honest. That's why you have to register it with Windows. The process of registering the DLL tells Windows where it is and how to work with it.
- Should I replace all 32-bit instances of HHActiveX.dll on our 64-bit machines?
I've never encountered a need to replace versions. But again, likely only Adobe can answer that one with a straight face.
- Assume I successfully register the 64-bit version of HHActiveX.dll. If our primary layout in RoboHelp HTML is HTML Help and I invoke the Generate Primary Layout function (and view result) or View Primary Layout function in RoboHelp HTML (i.e., I launch a .CHM from within RoboHelp HTML), will RoboHelp HTML re-register the 32-bit version of HHActiveX.dll?
- And if this is the case, does that mean I'll have to go back and re-register the 64-bit version each time I use either of those functions?
Launching the file does nothing to register the dll. That's why there is a separate process. The act of registering should be a one off. I believe what happens is that the Windows Registry is modified with information that HH.exe (64 bit or 32 bit) uses to determine what to do with the dll(s). Again, I'm not an application developer nor did I stay at a Holiday Inn Express last night so I can't claim to be one.
I believe that once you get both dlls properly registered, it won't matter if you launch the 64 bit or the 32 bit version of HH.exe. The Browse Sequence window should then show. (Incidentally, the same dll also manages behavior of the Glossary tab functionality in a CHM)
- What happens in a mixed (32-bit/64-bit) environment?
- Our in-house network contains a mix of 32-bit and 64-bit machines.
- We post a .CHM (with browse sequences) to a standalone PC (no RoboHelp applications are installed on this particular PC) on our in-house network.
- All the 32-bit and 64-bit machines on the network can access this single .CHM file via a shortcut.
- Does the existence and registration of HHActiveX.dll matter for just the PC hosting the .CHM, just the PCs accessing the .CHM, or all PCs? And which versions of HHActiveX.dll need to be registered for which machines?
Yeah, good luck with that. Years ago, Microsoft modified the behavior of CHM content to disallow working that way. CHMs are intended to be copied to *EACH PC* using it. There are ways to modify the Windows Registry to allow CHM to still work that way, but it's something your IT staff have to manage. And by modifying things to allow it, you have to relax security and that makes a machine more vulnerable to attacks down the road. Years later, Peter Grainge still reports that his page on this is still among the most often visited. Click here to visit Peter's page.
Hope I managed to satisfactorily answer your "few" other questions. I tried... LOL
Cheers... Rick
Helpful and Handy Links RoboHelp Wish Form/Bug Reporting Form Begin learning RoboHelp HTML 7, 8 or 9 within the day! |
Copy link to clipboard
Copied
Thanks to everyone for your input. Here's a summary of my findings for anyone that runs into this issue in the future.
How to Enable HTML Help (.CHM) Browse Sequences in a Windows 7 64-Bit Environment
Use the following steps to register the 64-bit version of HHActiveX.dll. These steps must be performed on any machine from which you want to view/use browse sequences.
Overview:
64-Bit Registration Steps:
Copy link to clipboard
Copied
Does anyone know if registering hhactivex.dll on Windows XP - 64-bit should work in the same manner as it does on Windows 7 - 64-bit?
I tried it and it does not appear to work. Any information would be greatly appreciated.
Thanks,
Andy