本文的主要意图是阐述在NoteFirst的Word插件或称Word AddIn的安装过程中遇到的问题和解决方案。
主要问题描述:在Microsoft Office自定义项安装程序的安装期间出错,遇到以下问题:System.IO.FileNotFoundException: 系统找不到指定的文件。(异常来自HRESULT:0x80070002)
该AddIn属于Word的COM加载项。
在我对该问题进行百度的过程中发现,并没有针对NoteFirst的解决方案,更多的是在VS的使用过程中出现的问题,这也是写下这篇文章的主要诱因。更多地,我参考其它人遇到的同类问题解决了自己的,因此为同样异常代码的相关问题提供一个参考。
环境:
NoteFirst:一款文献管理软件。1
NoteFirst 文献管理软件是国内首款网络版的文献资料管理、论文写作及科研协作工具,主要功能包括文献收集管理、论文写作帮助、科研协作交流以及学术信息搜索。NoteFirst 基于互联网, 可以多台电脑数据可以自动同步,并且全面支持国家标准,并满足SCI、EI 等收录中文论文要求双语参考文献的格式要求。
我:非IT相关领域学生。并不是第一次安装/使用Office插件,可能是由于之前用的诸如Acrobat等软件和AudTool等专用插件的成熟度比较高的原因,安装过程都很顺利。
在NoteFirst的安装过程中,安装程序运行到一半遇到问题,此时检查发现软件的主体部分已经安装完毕并且功能齐全,可以正常使用。故猜测其Setup的内在步骤分成两部分:软件主体+Word插件。(因为是一个文献管理软件,所以只涉及到Word)问题就出现在WordAddIn即Word插件的安装上。
错误代码:HRESULT:0x80070002
主要问题描述:System.IO.FileNotFoundException: 系统找不到指定的文件。
打开Word时,会自动运行该COM加载项的安装程序,出现报错。查看加载项列表发现,该加载项虽然出现在了运行时加载的列表中,但是状态是未加载并存在问题。
由于该Office插件安装的报错指向了NoteFirst的安装目录,因此我找到了NoteFirstAddIn2016.vsto这个文件,应该是一个Office插件的安装程序。运行报错指向了C盘Common Files的一处地址,但在C盘中并没有NoteFirst建立的目录。
有文章3认为,Office加载项无法成功安装的原因在于注册表,于是需要修改注册表,在如下两个位置各添加一项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\插件名称]“Description”=“Word Financal Product For test”“LoadBehavior”=dword:00000003"Manifest"=“file:///D:\test\test.vsto|vstolocal”“FriendlyName”=“Word Financal Product For test”
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\Word\Addins\插件名称]“Description”=“Word Financal Product For test”“LoadBehavior”=dword:00000003"Manifest"=“file:///D:\test\test.vsto|vteststolocal”“FriendlyName”=“Word Financal Product For test”
当然,注册表项里的位置需根据实际情况进行调整,并且为了注册表 可能存在(我不明白) 的一致性,我还根据隔壁的 OneNote.WordAddinTakeNotesService 添加了 “CommandLineSafe”=DWORD:00000003
实际上,NoteFirst在注册表中的位置是
\HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\NoteFirstAddIn2016
它Manifest的数值数据有一个 非常奇怪(我看不懂)的格式file:///D:/NoteFirst/KMS/NoteFirstAddIn2016.vsto
改好注册表之后,最神奇的事情发生了:
我想起来Office之前出了点小问题处在没有激活的状态,于是激活了再打开测试Word文档,发现加载项的安装程序顺利运行并且在菜单栏/工具栏出现了NoteFirst的插件,跟Acrobat成为了邻居,并且可以正常使用。
随后,出于一个理想化(强迫症)的原因,我删掉了上述在注册表中新加的两项,再次打开Word发现插件从工具栏消失了。(实际上在真正解决了此问题后我又查看了注册表的这两个位置,并没有建立NoteFirst相关的项。不过)此时,再次运行NoteFirstAddIn2016.vsto报错为
[T^T Orz]
有文章4认为解决该问题的关键在该文件处:C:\Program Files\Common Files\microsoft shared\VSTO\10.0\ VSTOInstaller.exe.config
其内容为:
[报错位置是http的位置(估计到了https处也会出问题)]
并且提供了解决方案:
–删了这个文件就好了
就好了。
有文章5 或6表示此异常是由于没有正确安装 NuGet Package Manager引起的,但是由于在我记忆中并没有见过NuGet,所以并没有尝试此方法。
如果是在VS的使用过程中遇到的该问题,此方法值得一试。
1 ↩︎
2 ↩︎
3 ↩︎
4 ↩︎
5 ↩︎
6 ↩︎