Sorry, no topics were found for the selected link.

Topics: Developer Forum, User Forum
Jul 1, 2009 at 10:41 PM

After building my HtmlHelp2x project, I register it using H2Reg.  I have the PluginNamespaces set at their default values of "ms.vsipcc+, ms.vsexpresscc+".  SdkLinkType is set to "Index".  For HelpAttributes, I have the default 3, plus "DocSet=ExpressLibVS", which was recommended on the HelpWare site for VS.Net 2008 Express, which I also have installed.

I load up VS.Net 2008 and bring up Help.  My project is correctly shown in the "Filtered by" list (among all the standard collections), and if I browse to one of my classes, and click on a link back to a .Net Framework item (such as System.Data.DbCommand), the link displays properly.

I try the above steps for VS.Net 2005 and VS.Net 2008 Express, both also on my machine, and the .Net Framework links work correctly.

Next, I call up my help via the deployment command line recommended in the SHFB help:

   "%CommonProgramFiles%\Microsoft Shared\Help 9\dexplore.exe" /helpcol ms-help://MyNamespace.MyClassLibrary

The help comes up, with my project as the only item in the "Filtered by" list.  If I browse to one of my classes, and click on a link back to a .Net Framework item, this time I get:

No topics found <script> function FillPage() { var keyString = "keywords="; var idxString = "index="; var urlString = "url="; var query = window.location.search; var j = 0; var delim; var i = query.indexOf(keyString); if (i >= 0) { i += keyString.length; delim = query.charAt(i); j = query.indexOf(delim, i+1); if (j > 0) keywordsSpan.innerText = query.substring(i, j+1); } i = query.indexOf(idxString); if (i >= 0) { i += idxString.length; delim = query.charAt(i); j = query.indexOf(delim, i+1); if (j > 0) indexSpan.innerText = query.substring(i, j+1); } i = query.indexOf(urlString); if (i >= 0) { i += urlString.length; delim = query.charAt(i); j = query.indexOf(delim, i+1); if (j > 0) urlSpan.innerText = query.substring(i, j+1); } } </script>

Sorry, no topics were found for the selected link.

Keywords = "T:System.Data.Common.DbCommand"
IndexMoniker =
Source URL =

Have I not configured something properly, or is this the expected behavior when a help project is viewed this way, rather than being launched from within VS.Net?

Jul 1, 2009 at 10:54 PM

My understanding is the help library you load should be an entire product, into which your help file is plugged in. Filter the content using the /filter argument. For example, here is the command line we now use to show only our help, by using a filter:

dexplore.exe  /helpcol ms-help://MS.VSCC.v90 /filter "VG.net"

You will need to change MS.VSCC.v90 to your specific Visual Studio product. The "VG.net" string is the value of the Help Title property in SHFB.

 

Regards,

Frank 

Jul 1, 2009 at 11:12 PM

Ok, that works nicely, thanks for the help!

But, you're saying that my installation program (that creates the shortcut to my help) needs to examine the target machine and determine what product to use?  In my case, using H2Viewer, I see that I have MS.VSCC, MS.VSCC.v80 and MS.VSCC.v90.  I don't know if there is an API to use to get this info, but I see that the files are located in C:\Documents and Settings\All Users\Application Data\Microsoft Help, so I could look in there I guess.

Seems sort of brittle, though.  If I find multiple choices, and pick MS.VSCC.v90 as the most recent one, my shortcut will break if MS.VSCC.v95 comes out, and the customer removes MS.VSCC.v90, no?

Jul 2, 2009 at 3:59 PM

Yes, you need to bring up the help for a specific Visual Studio product. If you think about it, there is no other alternative -- no combined help library would be internally consistent. If you are starting Visual Studio help from a shortcut, you would need a separate shortcut for each Visual Studio product.

For us, this is not an issue as we have to make separate builds for each version of Visual Studio. We use a version number to distinguish between each version and each installs in a different location with a different set of start menu shortcuts. Each version has a different installer.

You can look in the registry to see the path to dexplore.exe. The absense or presence of a key in the registry tells you what is installed. These are all in HKLM:

VS 2008: "Software\Microsoft\MSDN\9.0"

VS 2005: "Software\Microsoft\MSDN\8.0"

I don't know about express versions; we are forbidden to integrate with those. There is more information on the helpware site:

http://helpware.net/mshelp2/h2reg.htm#VS2005Merge

Jul 2, 2009 at 6:44 PM

Great info, thanks again Frank.  This is my first foray into writing help, so I'm still scaling the learning curve.

I think separate shortcuts for each VS product is acceptable for those who want to launch my help that way.  Most will probably just access it from within Visual Studio.