Outlook 2003加载项将无法加载,但处于正常工作状态

时间:2011-03-23 11:35:56

标签: c# deployment vsto outlook-addin outlook-2003

我创建了一个2003年,2007年的Outlook加载项和这个加载项在2007年和2010年运行良好,但在2003年没有在我自己的开发机器以外的任何机器上正确加载。没有代码问题,因为加载行为中没有显示错误,并且它不是禁用的项目。加载项也未显示在COM加载项列表中。这个加载项在2003年之前已经有效了。

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

我无法看到完整加载项在其自己的注册表设置下是如何工作的,但在测试下工作正常,并且仅在Outlook 2003上工作正常

以下是基本信息:

我的开发设置是:

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

安装项目中包含以下预先要求:

  • .Net 2.0
  • .Net 3.5SP1
  • Office 2003 PIA(也分别是2007年和2010年的PIA,分别为2007年和2010年)
  • VSTOSE运行时
  • Windows Installer 3.1

任何提示都会非常感激,因为我已经花了将近4天的时间来解决这个问题!

TIA。


更新1:

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

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>软件>微软>办公室>展望> 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评论;根据HKCR> MyAddin我有一个带有单个字符串值的CLSID键:

(default) - {add-in CLSID}

CLSID与HKCU中的相同>软件>课程> CLSID和整个注册表。

4 个答案:

答案 0 :(得分:3)

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

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

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

但是,我设法创建了以3为目标的加载项,因此我将[Company] .AddIns.Outlook2003重命名为[Company] .AddIns.Client。

我更改了HKCU的注册表设置>软件>微软>办公室>展望> Addins> MyAddin,引用所描述的更改,但由于某种原因我没有在HKCU>下更新它软件>类。

一旦我在VS中更改了后者的设置,它就有效了!

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

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

答案 1 :(得分:0)

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

  • VSTO_LOGALERTS=1
  • VSTO_SUPPRESSDISPLAYALERTS=0

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

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

Deploying Application-Level Add-ins

答案 2 :(得分:0)

我建议您按照此处描述的问题排查步骤进行操作:

  

<强> Hamed Ahmadi: My Office Addin Does Not Load!

答案 3 :(得分:0)

您是否确定Outlook因某种原因未被禁用?如果您已安装机器级别(而不是用户级别),则无论如何它都不会显示在Com add in列表中。也许尝试安装它作为每个用户添加(因此它显示在列表中)并从那里去?