2010-12-12 2 views
2

У меня есть приложение Windows Forms в VS2010. Он имеет ссылку на Interop.Outlook (2003). Затем я переустановил Windows XP и VS2010, но не устанавливал Outlook.Обнаружение Outlook установлен и динамически загружается INterop.Outlook

Теперь проект не компилируется.

Я думаю, что это приложение не будет работать, если Outlook не установлен на компьютере, в котором работает моя программа.

Мне нужно знать, обнаружил ли я Outlook и динамически загружал Interop.Outlook.dll (для использования типов PIA или Embedded Interop в .NET 4).

Если на компьютере установлен Outlook (2003, 2007, 2010, возможно, нужен код для обнаружения версии и совместимости версий Outlook), приложение отлично работает с функциональным Outlook.

Если устройство не установлено Outlook, приложение отлично работает без функционального Outlook.

Любой образец исходного кода или шаблонов goog и практики об этом ??

ответ

0

проверить API-интерфейс Installer, чтобы определить состояние установки Outlook или использовать один из описанных методов here.

+0

*** «Если вы хотите использовать Microsoft.Office.Interop.Outlook, то компонент должен быть установлен в системе. В противном случае он не будет Работа." ? *** – Kiquenet

1

Чтобы обнаружить Outlook, используйте поиск ProGID для Outlook.Application. От установки, смотрите в реестре для 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); 
     } 
    } 
} 

Чтобы избежать проблемы динамически загрузки Interop, вы должны установить «Вставить Interop Типы» для true для Microsoft.Office.Interop.Outlook.Interop.dll

+0

*** «Если вы хотите использовать Microsoft.Office.Interop.Outlook, тогда компонент должен быть установлен в системе, иначе это не сработает». ?*** действительно? – Kiquenet

Смежные вопросы