0

我正在尝试在 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,

文化=中性,PublicKeyToken=b03f5f7f11d50a3a
3Microsoft.VisualStudio.Help.CacheLib.UpdateFileMove
StateIdLogFilePath _fileListFileMove+_fileList8Microsoft.VisualStudio.Help.CacheLib.UpdateFileMoveState System.Guid²System.Collections.Generic.List 1[[Microsoft.VisualStudio.Help.CacheLib.MoveFile, Microsoft.VisualStudio.Help, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]²System.Collections.Generic.List1[[Microsoft.VisualStudio.Help.CacheLib.MoveFile, Microsoft.VisualStudio.Help, Version=2.1.0.0, Culture=neutral, PublicKeyToken=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

我已提交 Connect 问题,但正在等待满意的答复。

4

1 回答 1

1

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

使用未初始化库进行静默安装

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

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

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

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

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

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

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

您应该检测 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

于 2015-05-07T12:57:51.040 回答