【问题标题】:Word 2003 plug-in installation on Server 2003在 Server 2003 上安装 Word 2003 插件
【发布时间】:2009-01-23 04:28:35
【问题描述】:

我把别人的一堆东西交给了我。这些项目中有一个 Word 2003 加载项(VSTO 2005 SE、.NET 2.0),据报道它在 2007 年运行良好,但我们的部署环境需要 2003 年。它对于 Office 2003 的安装显然很好——没有错误,显示在添加/删除中 -- 但工具栏在 Word 本身中不可用。

据说这在某人的测试环境中运行良好,但我从未见过它在我们常见的开发环境中运行。我们有一个包含 MSI 和 setup.exe 的设置/部署项目。 (我尝试在 CAB 中打包东西以防万一,我已经尝试过独立安装 prereqs,没有明显区别。)

MSI,setup.exe,在 Visual Studio 中右击安装 setup/deploy 项目,这些方法都没有报告错误——但是这些方法都没有成功在 Server 2003 上的 Word 2003 中显示工具栏.但是,如果我将 Visual Studio 指向 winword.exe 进行调试并启动项目,则会显示加载项按钮。它继续出现在后来的独立客户初创公司中。在我通过添加/删除或右键单击卸载或运行 MSI 并删除将其明确删除之前,它仍可作为工具栏使用。

所以现在我不知所措——在调试中运行而在典型的设置/部署安装期间不会发生什么?

编辑:好的,更新。为 Word 2003 创建了一个干净的 VSTO 2005 加载项,新的加载项名称,干净的石板。在 Server 2003 和 XP Pro 上,裸项目、virgin registry 也会遇到相同的行为。我是 XP 的本地管理员,我是 2003 机器上的域管理员。

【问题讨论】:

  • 本网站仅用于编程问题。阅读常见问题解答。
  • 插件开发与编程非常相关。
  • 你说的很对——我完全看错了。我很抱歉。

标签: c# ms-word ms-office vsto add-in


【解决方案1】:

以下是一些故障排除问题:

  • 您正在开发什么样的插件?共享加载项还是 VSTO?如果 VSTO 是哪个版本?
  • 您使用的是什么操作系统? Vista 可能很棘手...
  • 在注册表中检查加载项的加载行为。您可以在

    中找到值
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\<add-in class name>\
    

    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\Word\Addins\<add-in classname>\
    

如果 LoadBehavior 的值为 2,则您的加载项在启动期间已被禁用。当 Word 无法实例化外接程序时会发生这种情况,通常是因为外接程序引发未处理的异常,或者 - 更常见的是 - 因为外接程序未正确注册。

您是否检查过目标系统上是否正确安装了 VSTO 运行时?

但是,即使您使用 VSTO,对于 Word,该插件仍然看起来像一个经典的 COM 插件,它扩展了经典的 IDTExtensibility2 接口。此类加载项必须通过以下方式注册:

  • 上述两个注册表项之一,用于告诉 Word 加载项的类名称以及加载行为和描述等附加信息
  • 插件的类名必须在

    下注册
    HKEY_CLASSES_ROOT\<add-in classname>\CSLID
    
  • 必须在下面注册正确版本的 COM 组件(其中 {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} 是 HKEY_CLASSES_ROOT\\CSLID 下指定的组件的 guid):

    HKEY_CLASSES_ROOT\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
    

以下两个链接也可以帮助您进一步缩小问题范围:

HOWTO: Troubleshooting Visual Studio and Office add-ins

Troubleshooting Outlook COM Addins – Using ProcMon

【讨论】:

  • 如前所述,VSTO(我认为——出于某种原因,这家伙也有共享加载项 KB 修补程序的先决条件)和 Server 2003。不幸的是,LoadBehavior 在它工作时没有任何不同,以及当它不起作用时。 (感谢您指出本地用户,我想知道为什么!在本地机器中。)
  • 抱歉,实际上加载行为可能在 2 和 3 之间变化,但任何一个值都不会产生差异。
  • 好的,所以一开始是 3,然后 Word 启动 sans add-in 后,该值变为 2。有没有我可以调查的日志?
  • 感谢您提供的所有重要信息,仍在挖掘... VSTO 运行时似乎很好,重新安装以防万一。我只是不明白为什么它在 Visual Studio 调试中运行良好,并且在被调试后,它独立运行良好,但在初始安装后不会独立运行。
  • 您是否尝试过删除(重命名)插件安装的所有相关注册表项,然后重新安装插件?可能是您的调试器在 CLSID 键下添加了另一个版本,这让 Word 感到困惑。
【解决方案2】:

编辑:对加载项程序集的完全信任最终得到了修复。似乎没有低于完全信任的情况。

//

最终向 Microsoft 开了一张票,他们向我介绍了 VSTO_SUPPRESSDISPLAYALERTS:

http://msdn.microsoft.com/en-us/library/ms269003(VS.80).aspx

此值默认为 1;将其设置为 0 会提供一个弹出对话框,否则会被隐藏。

仍在研究细节,我将继续更新此线程,但现在我们终于有了前进的基础:

Could not load file or assembly 'PrintTest2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)


************** Exception Text **************
System.IO.FileLoadException: Could not load file or assembly 'PrintTest2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Failed to grant permission to execute. (Exception from HRESULT: 0x80131418)
File name: 'PrintTest2007, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> System.Security.Policy.PolicyException: Execution permission cannot be acquired.
   at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission)
   at System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.HandleOnlineOffline(Exception e, String basePath, String filePath)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadStartupAssembly(EntryPoint entryPoint, Dependency dependency, Dictionary`2 assembliesHash)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ConfigureAppDomain()
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadAssembliesAndConfigureAppDomain(IHostServiceProvider serviceProvider)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadEntryPointsHelper(IHostServiceProvider serviceProvider)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2010-12-23
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多