Documentation‎ > ‎

Microsoft Help Viewer 2.0

posted Nov 12, 2011, 7:04 AM by Robert Chandler   [ updated Sep 11, 2012, 5:22 AM by Robert Chandler ]

Releases

  • 01-Aug-2012 - RTM
    - Visual Studio 11 RTM Help 2.0.50727.1 (Visual Studio 11.0.50727.1 RTMREL)
    - Windows 8 RTM Help 6.2 build 9200 (6.2.9200.0)
  • 01-June-2012 -- Release Preview
    - Visual Studio 11 RC Help 2.0.50522.1 (Visual Studio 11.0.50522)
    - Windows 8 Release Preview Help 6.2 build 8400 (6.2.8400.0)
  • 13-Sept-2011 -- Developer Preview 
    - Visual Studio 11 Beta Help 2.0.40825.0  (Visual Studio 11.0. 40825)  
    - Windows 8 Developer Preview Help 6.2 build 8102 (6.2.8102.0)
Help File Versions: RTM version = 2.0.50727.1  (all EXE and DLLs) Product version and File version
    except Microsoft.mshtml.dll = File Version 7.0.3300.1; Product version = 7.0.3300.0

Introduction 

Help Viewer 2 is the help system for Visual Studio 11 and also Windows 8 help. At the time of writing this site and code examples are based on Beta release, so please feel free to send me any corrections.

Help Viewer 2.0 is improved significantly over Help Viewer 1.0/1.1 (the help system for VS 10 / VS 10 SP1) in both design and features, however your .mshc help files will install on either system without change.

The maint changes for Help Viewer 2.0:
  • HV1 API calls were done via the URL. HV2 API now has a simple elegant COM interface.
  • HV1 tray application HelpLibAgent.exe is gone.
  • HV1 HelpLibManager.exe is gone. Now the HV2 content is managed within the VS 11 Viewer window.
  • Flipping between Online and Offline modes is now done through the Visual Studio 11 Help menu.
  • New Help Viewer window (HlpViewer.exe). Lots of improvements.
  • New flexible help update features. Download recovery. Host your updates on your server.
  • Install a help catalog to any location. 
  • Plus 3 different formats of help catalog (managed/unmanaged/.mshx).

Resources

Blogs by the help team:

Visual Studio 11 Implementation

Visual Studio 11 installs it's help run-time here:

%ProgramFiles%\Microsoft Help Viewer\v2.0\

Main help run-time files:
  • HlpViewer.exe -- Help Viewer window (only registered catalogs can be viewed in the VS 11 viewer)
  • HlpCtntMgr.exe - Help Content Manager - Add/remove help content. Command line interface only. The Help Content Manager GUI is built into HlpViewer.exe.
  • Microsoft.VisualStudio.Help.Runtime.dll - Core runtime help API (simple COM interface). Functions for opening a catalog and performing help queries.
  • Microsoft.VisualStudio.Help.dll - API for rendering help topics (no equivalent for Windows 8).
Unlike HV1, the HV2 runtime API does not return rendered HTML. Instead it returns the raw HTML as packaged in your .mshc help file. It's up to you to render this. Use our SDK code, or you can use the renderer provided by Microsoft.VisualStudio.Help.dll (for VS content this is best as you get all the expansion sections and all the trimmings).

Note: Executables are .NET and as such can easily be referenced by C# and VB .NET applications and decompiled using utilities such as Reflector.  DLLs are also registered ??? so that win32 apps can access them via COM.

Microsoft.VisualStudio.Help.dll is not dependent on the other help assemblies, so in theory you could ship it with your application (you need to check with Microsoft on the legality of this). The image (right) shows the basic .NET4 (or .NET 4.5 ???) dependencies (captured from Reflector.exe).

VS Help Viewer uses a protocol ms-xhelp:/// which is local to the view (does not extend to the browsers or other apps as in HV1). We provide example code that demonstrates how to setup a pluggable protocol in your own application.

Windows 8 Implementation

Windows 8 ships the file Windows.Help.Runtime.dll which has the same COM interface as the VS API file Microsoft.VisualStudio.Help.Runtime.dll. The file is installed and registered ??? in the Windows 8 GAC. To a path like this:

C:\Windows\Microsoft.NET\assembly\GAC_64\Windows.Help.Runtime\v4.0_6.2.0.0__31bf3856ad364e35\Windows.Help.Runtime.dll

Note: There is "no renderer" provided like with VS so you will need to render the HTML yourself (see our SDK example code). The Windows help viewer does it's own rendering.

Also there is no Help Content Manager shipped with Windows 8 (see the 3 different catalog types you can use).

The Windows 8 help viewer window is C:\Windows\HelpPane.exe. This is probably of little use to us as it does not support TOC/Index/Favorites. It's job is simply to display search results from the the following system help catalogs.
  • c:\windows\help\corporate --  Help files installed by enterprise (uncommon).
  • c:\windows\help\OEM -- Help files installed by OEMs such as HP, Sony, DELL etc
  • c:\windows\help\Windows -- Windows help files installed by Microsoft.
In these help files I've found various protocols used such as mshelp:///help/?;  mshelp:///OEM/?; mshelp:///windows/?
The example code simply replaces these with ms-xhelp:/// when rendering.

Comments