Blog

Popular blog articles

VS11 Integrated Help

posted Jan 16, 2013, 8:53 PM by Robert Chandler   [ updated Jan 16, 2013, 8:59 PM ]

Jason Josephy’s Visual Studio 2012 Integrated Help Extension gives us the ability to integrate offline help into the VS 2012 IDE (just like we did in VS 2003/2003/2005/2008). 






VS11 Help Debug

posted Dec 24, 2012, 4:47 AM by Robert Chandler   [ updated Jan 6, 2013, 4:48 AM ]

VS 2012 language Packs allow you to view VS and it's help in a foreign language. 

This is fine but developers often want to view VS UI in their own language and test foreign language help.
I've achieved this by writing a small executable that sits between VS 11 and the help. 
As always thanks to the MS guys (Paul O'Rear, Jason Campbell and Malcolm Dickson) for taking time out to help me on this community project! 

VS11 Help Debug application

This is free to download. All you do is run the application and next time you run VS 11 and press F1, help will now call the debug app instead of VS Help and display the command line sent. Check "Auto Launch" to continue to open VS help or click "Launch VS11 Help" to manually launch help (using the displayed command line passed to us by VS11). Use the "Locale Override" to modify the locale.

In the example below I have VS English UI installed. When I press F1 the debug app displays the command line. I've select locale Russian so help will be displayed in Russian. And that's it. Now you can have VS11 in one language while displaying Help in another language. Close the debug application and restart VS11, and now F1 works normally again.
The bottom panel just shows some debug (command line parsed etc). 

Hope you find it useful. If you do drop me a line.
A zip file contaning the EXE is attached to the end of this post.
-- Rob




Search Result Version Text

posted Dec 18, 2012, 10:23 PM by Robert Chandler   [ updated Dec 18, 2012, 10:34 PM ]

Under VS 2010 we had little control over the search result version text (search item sub-text).

In VS 2012 (HV 2) a new topic meta statement Microsoft.Help.DisplayVersion is used to set search result version text.

<meta name="Microsoft.Help.DisplayVersion" content="South Park v1.0" />


For a further discussion see our article Search Result Version Text

Foreign Language Help

posted Dec 18, 2012, 8:40 PM by Robert Chandler   [ updated Dec 24, 2012, 4:48 AM ]

How do I install and test my foreign language help in HV2? 

Using Language Packs

Help Viewer language is locked to the Visual Studio UI language. 

To change the UI & Help  language you need to download and install the required language pack.
To select a different language and access the language pack download page go to 

(VS main menu) "Tools > Options > Environment > International Settings".


Click the link to access the Language Pack download page. You can download and install one language pack at a time
(Tip: When the "Save As: dialog appears prefix the file name with the locale code).
Installation can take several minuets to complete and a reboot is required. Once installed, the new language is available in the language drop-down (see above).

Here (below) I've selected French, but notice that English downloads are still available.



As a matter of interest, you can see the Help registry changes after I installed French & Japanese language packs (I had opened Help Manager but hadn't downloaded anything).



English UI & Foreign Help

Developers like to test foreign language help under an English UI (or their own language). 

VS 2012 doesn't allow this. Or does it? 
If we created a broker application to sit between Visual Studio 2012 and VS Help Viewer we could easily switch the language.
See our VS11 Help Debug application.


VS 2012 Integration Notes

posted Sep 24, 2012, 7:14 PM by Robert Chandler   [ updated Oct 11, 2012, 6:06 PM ]

Why Don't Pages Appear in the TOC?

I created a .mshc help file using PackageThis. The root node "PackageThis" showed in the TOC but the children didn't. If I search for the missing pages they are definitely included.

This is been an on going problem. There can be different versions of Help modules (C++, Blend etc) installed. They have the same topic IDs. To get around this problem and make sure that the TOC looks neat and several page versions don't all get merged together, Microsoft checks each topics "Microsoft.Help.TopicVersion" meta tag.

<!-- meta name="Microsoft.Help.TopicVersion" content="40" /-->

Looks like anything can be merged into the root -1 on either VS 10 or VS 11.
PackageThis has had base node PackageThisRoot.htm, ID="PackageThisRootID" we parent all help into.

If I delete the TopicVersion tag from PackageThisRootNode, then VS 11 will show packages parented onto that node. But VS 10 wont.

The solution is to do away with the PackageThis dummy node, and parent help into the root. For PackageThis application we now change all topics version meta stamp to version=999. That way all topics downloaded will at least play properly with each other in the TOC.


HV 2.0 Problems and Fixes

posted Jun 13, 2012, 12:55 AM by Robert Chandler   [ updated Oct 11, 2012, 7:58 PM ]

This is a collection of common problems and possible fixes.
Many of these posts come from Help guru Jason A. Campbell-MSFT - Thanks Jason.

HV2 Security Issues

The problem is that the content store is shared for all users and content consists of more than just text. The potential to include behaviors, scripts, etc. into content that could be left as a "sleeper" for future users/administrators to execute has made our security model more complex that I really like.

In VS 2010 our security model to handle this was to allow for administrators to delegate content install of certain types of content. The fact that only some content was allowed to be installed by non-administrators caused a lot of confusion and the general feedback we got was that you had to be administrator to install content since 3'rd party content was shipped in formats that we could not validate (e.g. MSHC files instead of signed CABs).

For Dev 11 (VS 2012) we have followed that feedback and now require all content install to be done from administrator. We also tried to take a look at the different enterprise deployment scenarios. The deployment you might want to work with IT department on would be to have a single content store on a UNC path that all instances of VS on your network use. That would allow for them to update once for the network. Alternately the update can be scripted as a command line and pushed to machines in a similar method as any MSI install.

If this is going to be a problem (e.g. your IT department cannot/will not manage content) please file a connect bug to have us re-evaluate our requirements. Also post the link to this thread so others can vote on it.

Jason -- See full thread

Sharing HV2 Content

The administrator's guide was written to be a reference guide for these types of problems. I'll do my best to cover your questions but if I miss something it might help.

For network share:
The content store location is stored in a registry key (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Help\v2.0\Catalogs\VisualStudio11\LocationPath for dev11). During scripted deployment of VS our expectation is that the store will be moved if desired. Doing this allows for an IT department to pick a standard location for help either on the machine or on a UNC path. For UNC we do advise having only one machine/user do the content administration however multiple machines can view content while this occurs.

There is always a risk of having the issue you describe, this could occur either on a local machine with multiple users or on a share. The network does add complexity that increases the chances. We tried to minimize the risk but I cannot guarantee you will never see the issue.

Here is what we are doing for content install:

When we install/update content the operation occurs in a separate folder from the normal content store. The last step of install is to move the files to the store. These files are versioned so there should be no collision with current files. Once the move is complete HlpCtntMgr raises an install complete message and goes idle for a few seconds so the viewers can reconnect and load the new files. After this idle time the previous files are deleted. If a file is still locked we leave it in place, all files that should be deleted will have a ".delete." file added to the content store subsequent content management runs will attempt to delete the file as well so eventually the lock should be gone and the file will be deleted.

For scripting:
All content install is done from HelpCtntMgr.exe; this application takes command line switches. One of the possible operations is "refresh" that will check for updates against the endpoint and install them if available.

Jason -- See full thread

Proxy Problems

When I attempt to open help from the VS2012 it launches Microsoft Helper Viewer 2.0 but generates an error.

Below is the error from the event log.  From IE I can access the same page (http://services.mtps.microsoft.com/ServiceAPI/catalogs/VisualStudio11/en-US) without any errors.

An error occurred while checking for updates: Microsoft.VisualStudio.Help.CacheLib.CacheLibServiceApiException: The web server has reported an error for http://services.mtps.microsoft.com/ServiceAPI/catalogs/VisualStudio11/en-US: ProtocolError/ProxyAuthenticationRequired


  • The help viewer does not negotiate proxy authentication.  There have been a couple of different threads on ways to work around this on the forums.

    If your proxy server is using NTAuth you can try the aproach mentioned in http://social.msdn.microsoft.com/Forums/en-US/devdocs/thread/98c655dd-6f03-4556-84bf-332847279fc5.  This has had mixed feedback from people.  Some say it works other say no. For VS 11 the exe name has changed so you will need to modify the helpviewer.exe.config.  You probably will also need to create a HlpCtnMgr.exe.config and add the config value there.

    Alternatively some people have reporting using fiddler to negotiate the proxy has been successful for them.  The basic steps for that would be to install fiddler2 launch it, bring up a web browser and go to http://services.mtps.microsoft.com/ServiceAPI/catalogs/VisualStudio11/en-US.  Fiddler will capture the proxy authentication and re-play it as appropriate.  After this the help viewer should be able to comunicate through fiddler to the site.

    Neither solution is ideal but people have reported success with both.

    Hopefully this helps,

    Jason

1-6 of 6