2011-03-23 70 views
11

我已经为2003,2007,2010创建了Outlook加载项。加载项在2007和2010年工作正常,但未正确加载2003在任何机器上,除了我自己的开发机器。没有代码问题,因为加载行为中没有显示错误,并且它不是禁用的项目。该加载项也未显示在COM加载项列表中。此加载项以前在2003年以前工作。Outlook 2003加载项将无法加载,但工作顺序为

这是奇怪的部分。从早期的时间点我有一个加载项的副本,因此不包含完整版本的一些功能。这个插件在2003年正确加载。因此,作为我的测试的一部分,在虚拟机上,我安装了早期版本(我将其称为测试)和当前版本不起作用(我会称它full)。在HKCU> Software> Classes> CLSID> [[guid]]> InprocServer32的注册表中,对于测试版本,我将“Manifest Location”和“Manifest Name”键更改为完整版的值。然后我运行Outlook,完整版运行完美。

我看不出怎么外接不会下它自己的注册表设置,但在测试工作正常的,只有在Outlook 2003中

这里的基本信息:

我dev的设置是:

  • 的Windows 7 64位
  • Outlook 2003中安装
  • 运行VS2008的加载项目,但也使用VS2010作为卫星程序集。
  • 设置安全项目包含并修改为允许多个程序集设置CASPol。

以下预请求数都包含在安装项目:

  • NET 2.0
  • 净3.5SP1
  • Office 2003的PIA(也2007 & 2010 PIA的2007 & 2010分别)
  • VSTOSE运行时
  • Windows Installer 3.1

任何提示将不胜感激,因为我已经花了近4天的时间在这个问题上!

TIA。


更新1:

按@JoaoAngelo意见,我查了注册表设置,并有如下几点:

HKCU>软件>类> CLSID> {附加CLSID }> InprocServer32的

- (default) - '%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll' 
- ManifestLocation - path to the containing folder 
- ManifestName - the .dll.manifest file name 
- ThreadingModel - 'Both' 

HKCU>软件>微软>办公>展望>加载项> MyAddin

- (default) - not set 
- CommandLineSafe - '1' 
- Description - a string 
- FriendlyName - add-in ID 
- LoadBehavior - '3' (this never gets set to 2, which would indicate an issue) 
- Manifest - path to the .dll.manifest of the add-in assembly 
- Path - path to the containing folder 

我还添加下后者下面,具体根据Deployment page,但没有效果:

- ManifestLocation 
- ManifestName 

更新2:

作为每0xA3执行评论;在HKCR> MyAddin我有一个字符串值的CLSID项:

(default) - {add-in CLSID} 

的CLSID是相同HKCU>软件>类> CLSID并在整个注册表中看到。

+0

在HKCR - > MyAddin下定义了什么(即在加载项的编号下;与在HKCU> Software> Microsoft> Office> Outlook> Addins> MyAddin下使用的'MyAddin'字符串相同) – 2011-03-23 14:58:35

+0

我更新了原文(更新2)。 – SteveA 2011-03-23 16:47:30

+0

[编辑]:我看到这已更新 - 删除评论。我明白,我的问题实际上与此不同。 – 2011-05-25 19:43:15

回答

3

我终于找到了问题,它与注册表相关。

我原本计划有单独的加载项为每个版本的Outlook,这样我的命名空间和命名约定等分别为:

  • [公司] .AddIns.Outlook2003
  • [公司]。 AddIns.Outlook2007
  • [公司] .AddIns.Outlook2010

不过,我设法创建加载到目标的所有3,所以我改名[公司] .AddIns.Outlook2003是[公司]。 AddIns.Client 。

我改变了HKCU> Software> Microsoft> Office> Outlook> Addins> MyAddin的注册表设置,以引用所描述的更改,但出于某种原因,我没有在HKCU> Software> Classes下进行更新。

只要我在VS中改变了后者的设置,它就起作用了!

作为参考,在安装项目下的视图>注册表下进行了更改。

有点讨厌这个问题没有出现在2007/2010之下,因为它可能更容易追查。

0

如果你还没有做它已经应设置以下环境变量来帮助您解决插件加载问题:

  • VSTO_LOGALERTS=1
  • VSTO_SUPPRESSDISPLAYALERTS=0

第一个将导致在包含插件程序集的目录中创建的* .log文件中,第二个将在启动目标应用程序时显示弹出窗口,在本例中为Outlook。

您还会说,在您的Office 2003开发包中,外接程序可以正常工作。由于Visual Studio在执行构建时会自动在插件框中注册插件,因此应确保您在安装程序中创建了所有必需的注册表项。您可以查看下面的MSDN文章中所需的注册表项部分,以验证您在安装创建正确的键:

Deploying Application-Level Add-ins

+0

感谢您的回复。我之前尝试过记录警报,但他们没有做任何事情,因为我相信只有在加载项加载的情况下它们才会起作用。但是,我会再次添加它们以进行仔细检查。我还包括我自己的内部日志记录,但这显然没有用,因为加载项没有加载。我也仔细查看了您之前发送的链接,但是我再次检查它是否正确,谢谢。但是,似乎很奇怪的是,注册表项在2007和2010年都可以使用,但不是2003年。 – SteveA 2011-03-23 12:12:21

+0

我设置了警报,但怀疑,我没有得到任何回报。我已经使用您发布的部署应用程序级插件链接的结果更新了初始文章。 – SteveA 2011-03-23 13:06:28

0

我建议你遵循这里所描述的故障排除步骤:

Hamed Ahmadi: My Office Addin Does Not Load!

+0

感谢您的回复。不幸的是,我已经完成了这些步骤,并且不适用于我的情况。我也经历了[链接](http://blogs.msdn.com/b/vsod/archive/2008/04/22/troubleshooting-com-add-in-load-failures.aspx),但又是非这真的适用。关于这个链接,我已经启用了Fusion日志,但没有出现在Outlook.exe下,这也向我确认Outlook根本不加载加载项。 – SteveA 2011-03-23 12:08:22

0

确定由于某些原因,插件没有被禁用。如果您已经安装了机器级别(而不是用户级别),则在任何情况下都不会显示在Com添加列表中。也许尝试安装它作为每个用户添加(所以它显示在列表中)并从那里去?

+0

它未被禁用,并安装在用户级别。 – SteveA 2011-03-23 16:41:32

+0

@SteveA:您是否明确检查了您的加载项是否位于禁用加载项的列表中? – 2011-03-23 17:09:54

+0

这绝对不是在残疾物品。如果是这样,我也希望看到LoadBehaviour注册表设置从3更改为2.这就是为什么我怀疑它只是没有被加载的第一个地方。此外,我知道代码是正确的,按照我原来的帖子,所以它绝对不会被禁用。 – SteveA 2011-03-24 09:18:44