Определить установленный Outlook и динамически загружать INterop.Outlook - PullRequest
2 голосов
/ 12 декабря 2010

У меня есть приложение Windows Forms в VS2010. Имеется ссылка на Interop.Outlook (2003). Затем я переустановил Windows XP и VS2010, но не установил Outlook.

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 26 марта 2015

Чтобы определить, установлен ли 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);
        }
    }
}

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

0 голосов
/ 12 декабря 2010

проверьте API установщика для определения состояния установки Outlook или используйте один из методов, описанных здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...