我正在尝试在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但我正在等待令人满意的回复。
答案 0 :(得分:1)
有一篇关于在本地内容尚未初始化时尝试安装内容的博文很长。它可能适用于:
使用Uninitialize Library进行无提示安装
警告:如果以静默方式运行HLM(并且库存储未初始化),则库存储初始化将失败。所以你的安装会失败。
对于这种情况,我看到3个选项。因此,一旦检测到未初始化的库条件,您可以:
- 取消设置。告知用户他们首先需要使用VS Setup& amp;蓝色按钮。
- 不使用/ silent开关打开HLM。 Include / brandingPackage开关(见上文)。初始化完成后,您可以运行静默安装。
- 使用/ silent开关打开HLM。您还必须使用/ content开关指定创建库文件夹的位置。您可以在同一命令行上指定/ brandingPackage,/ content和/ sourceMedia开关。
醇>请注意,对于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");