Outlook 2003加载项无法加载,但处于正常工作状态
-
28-10-2019 - |
题
我已经为2003、2007和2010创建了一个Outlook加载项。该加载项在2007和2010中正常工作,但是在2003年无法在除我自己的开发机之外的任何计算机上正确加载。没有代码问题,因为在加载行为中没有显示错误,并且它不是禁用项目。该加载项也未显示在COM加载项列表中。此加载项以前曾在2003下运行。
这是奇怪的部分。我有较早时间的加载项副本,因此不包含完整版本的某些功能。此加载项在2003年正确加载。因此,作为测试的一部分,在VM上,我安装了较早的版本(我将其称为 test ),而当前版本不起作用(我称它为完整)。在HKCU>软件>类> CLSID> [[guid]]> InprocServer32下的注册表中,对于 test 版本,我将“清单位置”和“清单名称”键更改为完整版本。然后,我运行Outlook,完整版本运行完美。
我看不到完整加载项在其自身的注册表设置下如何工作,但在 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 Installer 3.1
任何提示将不胜感激,因为我已经在此问题上花了将近4天!
TIA。
更新1:
根据@JoaoAngelo的注释,我检查了注册表设置,它们如下:
HKCU>软件>类> CLSID> {add-in CLSID}> InprocServer32 通用标签
HKCU>软件> Microsoft> Office> Outlook>加载项> MyAddin 通用标签
根据“部署”页面,我还在后者下添加了以下内容,但无济于事: 通用标签
解决方案
我终于设法找到了问题,这与注册表有关。
我最初计划为每个版本的Outlook具有单独的加载项,因此我的命名空间和命名约定等如下:
- [Company] .AddIns.Outlook2003
- [Company] .AddIns.Outlook2007
- [Company] .AddIns.Outlook2010
但是,我设法创建了针对全部3个目标的加载项,因此我将[Company] .AddIns.Outlook2003重命名为[Company] .AddIns.Client。
我已更改HKCU>软件> Microsoft> Office> Outlook>加载项> MyAddin的注册表设置,以引用所描述的更改,但由于某些原因,我没有在HKCU>软件>类下对其进行更新。
一旦我在VS中更改了后者的设置,它就起作用了!
供参考,这些更改是在VS中的“安装项目”下的“视图”>“注册表”下进行的。
有点恼人的是,此问题在2007/2010年之后没有出现,因为它可能更易于查找。
其他提示
如果尚未完成操作,则应设置以下环境变量以帮助您解决加载项加载问题:
-
VSTO_LOGALERTS=1
-
VSTO_SUPPRESSDISPLAYALERTS=0
第一个将在包含加载项程序集的目录中创建一个* .log文件,第二个将使您在启动目标应用程序(在本例中为Outlook)时显示错误弹出窗口。
您还说过,在Office 2003的开发箱中,加载项正常工作。由于Visual Studio在执行生成时会在dev框中自动注册该插件,因此应确保在安装程序中创建了所有必需的注册表项。您可以检查以下MSDN文章中的所需注册表项部分,以验证您是否在安装程序中创建了正确的密钥:
我建议按照此处描述的故障排除步骤进行操作:
您确定由于某种原因Outlook未禁用该插件吗?如果您已在计算机级别(而不是用户级别)安装了它,则无论如何它都不会显示在Com加载项列表中。也许尝试将其安装为每个用户的插件(这样它确实会显示在列表中)然后从那里开始?