Outlook 2003 加载项无法加载,但可以正常工作

Posted

技术标签:

【中文标题】Outlook 2003 加载项无法加载,但可以正常工作【英文标题】:Outlook 2003 Add-in won't load, but is in working order 【发布时间】:2011-07-21 05:59:04 【问题描述】:

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

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

我看不到 full 加载项如何在它自己的注册表设置下不起作用,但在 test 的设置下可以正常工作,并且只能在 Outlook 2003 上运行.

这是基本信息:

我的开发设置是:

Windows 7 64 位 已安装 Outlook 2003 为插件项目运行 VS2008,但也为附属程序集使用 VS2010。 Set Security 项目已包含在内并进行了修改,以允许多个程序集设置 CASPol。

安装项目中包含以下先决条件:

.Net 2.0 .Net 3.5SP1 Office 2003 PIA(也分别是 2007 和 2010 年的 2007 和 2010 年 PIA) VSTOSE 运行时 Windows 安装程序 3.1

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

TIA。


更新 1:

根据@JoaoAngelo cmets,我检查了注册表设置,它们如下:

HKCU > 软件 > 类 > CLSID > add-in 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 > Software > Microsoft > Office > Outlook > Addins > 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 cmets;在 HKCR > MyAddin 下,我有一个带有单个字符串值的 CLSID 键:

(default) - add-in CLSID

CLSID 与 HKCU > Software > Classes > CLSID 和整个注册表中看到的相同。

【问题讨论】:

在 HKCR 下定义的内容 -> MyAddin(即在插件的 prog id 下;在 HKCU > Software > Microsoft > Office > Outlook > Addins > MyAddin 下使用相同的“MyAddin”字符串) 我更新了原帖(更新2)。 Edit :我看到这已经更新 - 删除评论。我明白了,我的问题实际上与此不同。 【参考方案1】:

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

我最初计划为每个版本的 Outlook 提供单独的加载项,因此我的命名空间和命名约定等是:

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

但是,我设法创建了针对所有 3 个的加载项,因此我将 [Company].AddIns.Outlook2003 重命名为 [Company].AddIns.Client。

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

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

作为参考,在 VS 中的 Setup Project 下的 View > Registry 下进行了更改。

有点烦人的是这个问题在 2007/2010 年没有出现,因为它可能更容易追踪。

【讨论】:

【参考方案2】:

如果您还没有这样做,您应该设置以下环境变量来帮助您解决插件加载问题:

VSTO_LOGALERTS=1 VSTO_SUPPRESSDISPLAYALERTS=0

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

您还说,在您使用 Office 2003 的开发盒中,插件可以正常工作。由于 Visual Studio 会在您执行构建时自动在开发框中注册插件,因此您应该确保在设置中创建了所有必要的注册表项。您可以检查以下 MSDN 文章中的必需的注册表项部分,以验证您在安装程序中创建的密钥是否正确:

Deploying Application-Level Add-ins

【讨论】:

感谢您的回复。我之前尝试过记录警报,但它们没有做任何事情,因为我相信它们只有在加载插件时才有效。但是,我将再次添加它们以进行仔细检查。我还包括我自己的内部日志记录,但这显然没有用,因为未加载加载项。我也查看了您之前发送的链接,但我会再次检查它是否正确,谢谢。 2007 年和 2010 年的注册表项都可以,但 2003 年的注册表项似乎很奇怪。 我设置了警报,但正如怀疑的那样,我什么也没得到。我已使用您发布的 Deploying Application-Level Add-ins 链接中的发现更新了最初的帖子。【参考方案3】:

我建议按照此处描述的故障排除步骤进行操作:

Hamed Ahmadi: My Office Addin Does Not Load!

【讨论】:

感谢您的回复。不幸的是,我已经完成了这些步骤并且不适用于我的情况。我也经历过link,但同样不适用。关于该链接,我启用了 Fusion 日志,但 Outlook.exe 下没有出现任何日志,这也向我确认 Outlook 根本没有加载加载项。【参考方案4】:

您确定该插件没有因某种原因被 Outlook 禁用吗?如果您已在机器级别(而不是用户级别)安装它,无论如何它都不会出现在 Com 插件列表中。也许尝试安装它作为每个用户添加(所以它确实显示在列表中)并从那里开始?

【讨论】:

它没有被禁用,并且是在用户级别安装的。 @SteveA:您是否明确检查过您的加载项是否在硬禁用加载项列表中? 绝对不在禁用项中。如果是这样,我还希望看到 LoadBehaviour 注册表设置从 3 更改为 2。这就是为什么我怀疑它一开始就没有被加载。另外,根据我的原始帖子,我知道代码是正确的,所以它绝对不会被禁用。 硬禁用并不意味着负载行为发生变化。检查我的答案中的链接,了解如何检查您的加载项是否被硬禁用。 我知道如何检查加载项是否被硬禁用。无论如何,您发布的文章实际上并不适用于 2003 年。但是,是的,我知道如何check for hard disabling in 2003。正如我在原始帖子中所述,加载项处于正常工作状态,我知道加载项代码不是问题,这会导致硬禁用。我相信这是一个注册表问题。

以上是关于Outlook 2003 加载项无法加载,但可以正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Outlook 加载项迁移到 vs 2010

使用文件资源管理器发送到 - 邮件收件人时启动的Outlook加载项

急!office2010 outlook 无法加载信息服务的.DLL文件 ?

如何对无法加载的 VSTO 插件进行故障排除?

VSTO、Outlook 加载项和 Visual Studio 2015

outlook2007,开发的vsto插件,安装到客户机提示:未加载。加载COM加载项时出现运行错误