简体   繁体   English

VSTO:安装Outlook Office 2003的加载项

[英]VSTO: Install an add-in to Outlook Office 2003

I posted an article here ( How do I set permissions on my VSTO outlook add-in? ) and I was able to build my installer. 我在这里发布了一篇文章( 如何在我的VSTO outlook插件上设置权限? )我能够构建我的安装程序。 I thought that once the installer built itself, everything would work fine. 我认为一旦安装程序自行构建,一切都会正常工作。

I was wrong. 我错了。 It works on about half of the PC's I've run the installer on. 它适用于我运行安装程序的大约一半的PC。 My problem is that the other half doesn't work. 我的问题是另一半不起作用。 I'm trying to install an add-in to Outlook Office 2003. 我正在尝试安装Outlook Office 2003的加载项。

I've even gone so far as to create the steps manually by using a batch file. 我甚至通过使用批处理文件手动创建步骤。 Nothing seems to work on these PCs and I can't find a common denominator that I can rule out or in that will make the VSTO Addin work. 似乎没有什么能在这些PC上运行,我找不到一个我可以排除的共同点,或者说这将使VSTO Addin起作用。

Here is the batch file I am using. 这是我正在使用的批处理文件。 What am I doing/not-doing wrong with this? 我在做什么/不做错?

I could really use a VSTO expert's help. 我真的可以使用VSTO专家的帮助。 Thanks!!!! 谢谢!!!!

EDIT I've changed the batch file and registry settings to reflect recent updates to them. 编辑我已经更改了批处理文件和注册表设置,以反映最近的更新。 I've also attached the error text that comes from the PCs that don't work. 我还附上了不起作用的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

I took the Registry settings (mentioned in the batch file above) straight from a PC that this application worked on. 我直接从这个应用程序工作的PC上获取了注册表设置(在上面的批处理文件中提到)。 The VSTO Registry settings I am using are : 我使用的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

The error I get is: 我得到的错误是:

Could not load file or assembly 'Microsoft.Office.Interop.Outlook, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. 无法加载文件或程序集“Microsoft.Office.Interop.Outlook,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c'或其依赖项之一。 The system cannot find the file specified. 该系统找不到指定的文件。

************** 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
----------------------------------------

Ok, so apparently the AddIn gets automatically disabled by Outlook. 好的,显然,Outlook会自动禁用AddIn。 Another answer with a slightly different take: 另一个答案略有不同:

Go to Start -> Control Panel -> System -> Advanced -> Environment Variables -> System Variables, and add VSTO_SUPPRESSDISPLAYALERTS with a value of 0. This will display error messages on screen, as opposed to silently disabling the VSTO. 转到开始 - >控制面板 - >系统 - >高级 - >环境变量 - >系统变量,并添加值为0的VSTO_SUPPRESSDISPLAYALERTS。这将在屏幕上显示错误消息,而不是静默禁用VSTO。 If you'd rather have a log to disk, add VSTO_LOGALERTS and set it to 1. 如果您希望将日志记录到磁盘,请添加VSTO_LOGALERTS并将其设置为1。

Hopefully this will provide you with some extra detail that might help us solve your issue! 希望这将为您提供一些可以帮助我们解决您的问题的额外细节!

To start with something trivial: on the PC's where things didn't work, did you check the registry to see if all the entries were properly added? 从一些微不足道的事情开始:在没有工作的PC上,您是否检查了注册表以查看是否所有条目都已正确添加? For instance, did the .bat file get run under an account that is actually allowed writing to HKEY_CLASSES_ROOT? 例如,.bat文件是否在一个实际允许写入HKEY_CLASSES_ROOT的帐户下运行?

Are any of those PC's running Vista? 这些PC中有没有运行Vista? Could it be they are running the Office suite without UAC, or with a full administrator account? 可能是他们在没有UAC的情况下运行Office套件,还是使用完整的管理员帐户? In that case, the entries should be added to the HKEY_LOCAL_MACHINE. 在这种情况下,应将条目添加到HKEY_LOCAL_MACHINE。

Edit 编辑

Ok, if you are sure things are added to the registry properly, next up is RegMon (or procmon if you so prefer). 好吧,如果您确定已正确添加到注册表中的内容,则接下来是RegMon (如果您愿意,则为procmon)。 Fire up regmon, start the office host application, and see where it is and isn't looking for the VSTO add-in. 启动regmon,启动办公室主机应用程序,查看它的位置,而不是查找VSTO加载项。 Start off with a filter based on your add-in name, then widen up or narrow down depending on the amount of data. 从基于您的加载项名称的过滤器开始,然后根据数据量扩大或缩小范围。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM