自定义帮助内容无法安装,间歇

时间:2015-05-06 14:23:43

标签: visual-studio-2012 visual-studio-2013 help-viewer

我正在尝试在Visual Studio 2013的HelpViewer 2.1中安装帮助内容,并且遇到间歇性错误。 帮助有时无法安装。 我们有一个msi安装程序,它运行以下命令。

"C:\Program Files (x86)\Microsoft Help Viewer\v2.1\HlpCtntMgr.exe" /operation install /catalogname "VisualStudio12" /silent /locale en-us /sourceuri CURRENTDIR\helpcontentsetup.msha

.msha指向CAB文件。 CAB文件已签名。

如果我在命令提示符下尝试上面的命令,它总是失败。然而,安装程序有时会成功。

当它失败时,我得到一个.dat文件,我正在尝试安装的.cab文件位于C:\ ProgramData \ Microsoft \ HelpLibrary2 \ Catalogs \ VisualStudio12 \ Incoming \ Cab目录中。 补救措施是修复VS2013维修HelpViewer 2.1 !!!!!或者有时从上面的目录中删除CAB文件。

这是.dat文件的内容:

ÿÿÿÿ          ^Microsoft.VisualStudio.Help, Version=2.1.0.0,
     

Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a
  3Microsoft.VisualStudio.Help.CacheLib.UpdateFileMove
  StateIdLogFilePath _fileListFileMove + _fileList8Microsoft.VisualStudio.Help.CacheLib.UpdateFileMoveState   System.Guid²System.Collections.Generic.List1[[Microsoft.VisualStudio.Help.CacheLib.MoveFile, Microsoft.VisualStudio.Help, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]²System.Collections.Generic.List 1 [[Microsoft.VisualStudio.Help.CacheLib.MoveFile,   Microsoft.VisualStudio.Help,Version = 2.1.0.0,Culture = neutral,   公钥= b03f5f7f11d50a3a]]
  ýÿÿÿ8Microsoft.VisualStudio.Help.CacheLib.UpdateFileMoveState
  value__üÿÿÿSystem.Guid
  _a_b_c_d_e_f_g_h_i_j_k
  9ëPüÎ0O'ÏûZ9Ÿ*
  fC:\ ProgramData \ Microsoft \ HelpLibrary2 \ Catalogs \ VisualStudio12 \ 500eeb39-cefc-4f30-91cf-fb5a13399f2a.dat

     

²System.Collections.Generic.List`1[[Microsoft.VisualStudio.Help.CacheLib.MoveFile,   Microsoft.VisualStudio.Help,Version = 2.1.0.0,Culture = neutral,   PublicKeyToken = b03f5f7f11d50a3a]] _items_size_version   /Microsoft.VisualStudio.Help.CacheLib.MoveFile []
         -Microsoft.VisualStudio.Help.CacheLib.MoveFile

filed a Connect issue但我正在等待令人满意的回复。

1 个答案:

答案 0 :(得分:1)

有一篇关于在本地内容尚未初始化时尝试安装内容的博文很长。它可能适用于:

  

使用Uninitialize Library进行无提示安装

     

警告:如果以静默方式运行HLM(并且库存储未初始化),则库存储初始化将失败。所以你的安装会失败。

     

对于这种情况,我看到3个选项。因此,一旦检测到未初始化的库条件,您可以:

     
      
  1. 取消设置。告知用户他们首先需要使用VS Setup& amp;蓝色按钮。
  2.   
  3. 不使用/ silent开关打开HLM。 Include / brandingPackage开关(见上文)。初始化完成后,您可以运行静默安装。
  4.   
  5. 使用/ silent开关打开HLM。您还必须使用/ content开关指定创建库文件夹的位置。您可以在同一命令行上指定/ brandingPackage,/ content和/ sourceMedia开关。
  6.         

    请注意,对于3),您可以通过从注册表中读取LocalStore =来获取默认/内容路径(请参阅常见问题解答页面)。

         

    哦还有一个问题。显然,如果您在Windows XP上使用/ content path,路径将包含空格并且需要围绕它的引号。然而,引号使命令失败(一个错误)。我唯一的建议是使用包含空格的路径段的短路径名称。程序员将知道如何做到这一点。

它还列出了一些其他问题,例如在执行安装时不应运行帮助库,因此不应并行添加库。

  

如果帮助库管理器已在运行,该怎么办?

     

您应该检测HLM是否已在运行。程序员可以通过搜索过程来完成此操作(请参阅下面的C#代码)。不要使用FindWindow(),因为在静默模式下没有要查找的窗口。如果HLM正在运行,您应该要求用户完成当前任务,然后关闭HLM以便继续安装。由于Windows通常会限制您一次运行一个安装,因此您尝试同时运行HLM的多个应用程序通常不会出现问题。

 // Get all instances of HLM running on the local
 // computer. If you get any processes back then you know HLM is running.
 Process [] localByName = Process.GetProcessesByName("HelpLibManager");

此处提供了更多信息:http://mshcmigrate.helpmvp.com/faq/install