【发布时间】: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 :我看到这已经更新 - 删除评论。我明白了,我的问题实际上与此不同。
标签: c# deployment vsto outlook-addin outlook-2003