检测Outlook安装并动态加载INterop.Outlook
我在VS2010中有一个Windows窗体应用程序。 它引用了Interop.Outlook(2003)。 然后,我重新安装了Windows XP和VS2010,但没有安装Outlook。
现在,该项目没有编译。
我想这个,如果Outlook没有安装在我的程序执行的机器上,我的应用程序将无法工作。
我需要知道我是否检测到Outlook已安装,并动态加载Interop.Outlook.dll(用于在.NET 4中使用Outlook PIA或Embedded Interop类型)。
如果计算机安装了Outlook(2003,2007,2010,可能需要代码来检测版本并执行Outlook版本的兼容性),则应用程序可以正常运行Outlook。
如果计算机未安装Outlook,则应用程序可以正常运行而无需functionOutlook。
关于它的任何示例源代码或goog模式和实践?
要检测是否已安装Outlook,请查找“Outlook.Application”ProgID。
从安装程序中,在注册表中查找HKEY_CLASSES_ROOT\Outlook.Application
在运行时,您可以这样做:
using System; using Microsoft.Office.Interop.Outlook; class Program { static void Main(string[] args) { var outlookType = Type.GetTypeFromProgID("Outlook.Application"); if (outlookType == null) { Console.WriteLine("Not installed."); } else { var app = Activator.CreateInstance(outlookType) as Application; Console.WriteLine(app.Name); } } }
为避免动态加载互操作的问题,您应该为Microsoft.Office.Interop.Outlook.Interop.dll
设置Embed Interop Types
为true。
检查Installer API以检测Outlook的安装状态或使用此处描述的方法之一。