【问题标题】:VSTO: Install an add-in to Outlook Office 2003VSTO:将加载项安装到 Outlook Office 2003
【发布时间】:2010-11-11 18:48:37
【问题描述】:

我在此处 (How do I set permissions on my VSTO outlook add-in?) 发布了一篇文章,并且能够构建我的安装程序。我认为一旦安装程序自行构建,一切都会正常工作。

我错了。它适用于我运行安装程序的大约一半的 PC。我的问题是另一半不起作用。我正在尝试将加载项安装到 Outlook Office 2003。

我什至已经使用批处理文件手动创建步骤。在这些 PC 上似乎没有任何效果,我找不到可以排除的共同点,或者这将使 VSTO 插件正常工作。

这是我正在使用的批处理文件。我在做什么/不做错什么?

我真的可以使用 VSTO 专家的帮助。谢谢!!!!

编辑我已更改批处理文件和注册表设置以反映最近的更新。我还附上了来自无法工作的 PC 的错误文本。

@echo off

echo Installing Visual Studio for Office Runtime (SE 2005)...
..\VSTO\vstor.exe

echo Creating Directories...
mkdir "c:\program files\Project Archiver"

echo Installying Add-In... 
echo Copying files...
xcopy /Y *.dll "c:\program files\Project Archiver"
xcopy /Y *.manifest "c:\program files\Project Archiver"

echo Setting Security...
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -polchgprompt off
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -u -ag All_Code -url "c:\program files\Project Archiver\ProjectArchiver.dll" FullTrust -n "Project Archiver" -d "Outlook plugin for archiving"
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -u -ag All_Code -url "c:\program files\Project Archiver\Microsoft.Office.Interop.SmartTags.dll" FullTrust -n "Project Archiver" -d "Outlook plugin for archiving"
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe" -polchgprompt on

echo Loading Registry Values...
"c:\program files\Project Archiver\VSTO_settings.reg"

echo "That should do it."
pause

我直接从运行此应用程序的 PC 中获取了注册表设置(在上面的批处理文件中提到)。我使用的 VSTO 注册表设置是:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ProjectArchiver\CLSID]
@="{27830B8D-F7A1-4945-AC4A-47661B9ED36D}"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}]
@="ProjectArchiver -- an addin created with VSTO technology"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\InprocServer32]
@=hex(2):25,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,50,00,72,00,6f,00,67,00,72,\
  00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,4d,00,69,00,63,00,\
  72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64,\
  00,5c,00,56,00,53,00,54,00,4f,00,5c,00,38,00,2e,00,30,00,5c,00,41,00,64,00,\
  64,00,69,00,6e,00,4c,00,6f,00,61,00,64,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,00,00
"ManifestName"="ProjectArchiver.dll.manifest"
"ThreadingModel"="Both"
"ManifestLocation"="C:\\Program Files\\Project Archiver\\"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\ProgID]
@="ProjectArchiver"

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\Programmable]

[HKEY_CLASSES_ROOT\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\VersionIndependentProgID]
@="ProjectArchiver"

[HKEY_CLASSES_ROOT\ProjectArchiver]
@=""





[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}]
@="ProjectArchiver -- an addin created with VSTO technology"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\InprocServer32]
@=hex(2):25,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,50,00,72,00,6f,00,67,00,72,\
  00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,4d,00,69,00,63,00,\
  72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64,\
  00,5c,00,56,00,53,00,54,00,4f,00,5c,00,38,00,2e,00,30,00,5c,00,41,00,64,00,\
  64,00,69,00,6e,00,4c,00,6f,00,61,00,64,00,65,00,72,00,2e,00,64,00,6c,00,6c,\
  00,00,00
"ManifestName"="ProjectArchiver.dll.manifest"
"ThreadingModel"="Both"
"ManifestLocation"="C:\\Program Files\\Project Archiver\\"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\ProgID]
@="ProjectArchiver"

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\Programmable]

[HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{27830B8D-F7A1-4945-AC4A-47661B9ED36D}\VersionIndependentProgID]
@="ProjectArchiver"

[HKEY_LOCAL_MACHINE\Software\Classes\ProjectArchiver]
@=""

[HKEY_LOCAL_MACHINE\Software\Classes\ProjectArchiver\CLSID]
@="{27830B8D-F7A1-4945-AC4A-47661B9ED36D}"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Outlook\Addins\ProjectArchiver]
"Manifest"="C:\\Program Files\\Project Archiver\\ProjectArchiver.dll.manifest"
"LoadBehavior"=dword:00000003
"FriendlyName"="ProjectArchiver"
"Description"="ProjectArchiver -- an addin created with VSTO technology"
"CommandLineSafe"=dword:00000001

我得到的错误是:

无法加载文件或程序集“Microsoft.Office.Interop.Outlook, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或其依赖项之一。系统找不到指定的文件。

************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Outlook, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Office.Interop.Outlook, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
   at ProjectArchiver.ThisAddIn.Initialize()
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.CreateStartupObject(EntryPoint entryPoint, Dependency dependency, Assembly objectAssembly)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ConfigureAppDomain()
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadAssembliesAndConfigureAppDomain(IHostServiceProvider serviceProvider)
   at Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadEntryPointsHelper(IHostServiceProvider serviceProvider)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].



************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
    CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Microsoft.VisualStudio.Tools.Applications.Runtime
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.816
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualStudio.Tools.Applications.Runtime/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.Tools.Applications.Runtime.dll
----------------------------------------
Microsoft.Office.Tools.Common
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.816
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.Office.Tools.Common/8.0.0.0__b03f5f7f11d50a3a/Microsoft.Office.Tools.Common.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
ProjectArchiver
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files/Callidus/Project%20Archiver/ProjectArchiver.DLL
----------------------------------------

【问题讨论】:

标签: outlook vsto distribution outlook-addin outlook-2003


【解决方案1】:

好的,显然插件会被 Outlook 自动禁用。另一个略有不同的答案:

转到开始 -> 控制面板 -> 系统 -> 高级 -> 环境 变量 -> 系统变量,并添加值为 0 的 VSTO_SUPPRESSDISPLAYALERTS。这将在屏幕上显示错误消息,而不是静默禁用 VSTO。如果您希望将日志记录到磁盘,请添加 VSTO_LOGALERTS 并将其设置为 1。

希望这将为您提供一些额外的细节,可能有助于我们解决您的问题!

【讨论】:

  • 看到这个错误后,我发现了一些东西……虽然它发誓说 PIA 是自动安装在每个人的机器上的……但事实并非如此。我将 PIA 安装程序作为我的安装脚本的一部分,并且(尽管现在有更多按钮可供单击),它 100% 的时间都可以工作。非常感谢你帮助我!! (附注:对于那些寻找的人,您可以在 microsoft.com/downloads/… 找到 2003 年的 PIA 安装程序)
  • 是的,很抱歉不得不一步一步完成这些步骤,而不是准备好答案,但我很高兴你解决了...干得好!
【解决方案2】:

首先从一些琐碎的事情开始:在 PC 上出现问题的地方,您是否检查了注册表以查看是否所有条目都已正确添加?例如,.bat 文件是否在实际允许写入 HKEY_CLASSES_ROOT 的帐户下运行?

这些 PC 中是否有运行 Vista 的?是他们在没有 UAC 的情况下运行 Office 套件,还是使用完整的管理员帐户?在这种情况下,应将条目添加到 HKEY_LOCAL_MACHINE。

编辑

好的,如果您确定已正确添加到注册表中,接下来是RegMon(或 procmon,如果您愿意的话)。启动 regmon,启动 office 主机应用程序,然后查看它在哪里以及是否在寻找 VSTO 加载项。从基于您的加载项名称的过滤器开始,然后根据数据量扩大或缩小范围。

【讨论】:

  • 感谢您的链接。为了完成这件事,我一直在绞尽脑汁。回答您的问题: 1) 用户是他们自己盒子上的管理员。 2) 我已经把东西从 HKCU 搬到了 HKLM。 3) 由于管理员可以写信给 HKCR。我在几台 PC 上验证了这些条目。仍然......没有运气。我要疯了。
  • 刚刚验证了所有相关 PC 的操作系统版本号(如果有帮助):操作系统:XP Professional(5.1,build 2600)Service pack 2. Office 版本:Office Professional 2003(Outlook 2003 版 11.8206.8221 SP3)
  • 我已经使用 RegMon 来查看正常工作的 PC 与不正常工作的 PC 上发生的情况。它们都访问同一组注册表项。两者都在同一行上获得“成功”。唯一的区别是不工作的 PC 会立即将 LoadBehavior 从 3 设置为 2。(禁用)。我是否正确设置了 CASPOL 行中的权限?我假设我是根据 Microsoft 论坛网站做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2021-12-12
相关资源
最近更新 更多