2010-12-12 6 views
2

Ich habe eine Windows Forms-Anwendung in VS2010. Es hat einen Verweis auf Interop.Outlook (2003). Dann habe ich Windows XP und VS2010 neu installiert, aber nicht Outlook installieren.Erkennen Sie Outlook installiert und laden Sie dynamisch INterop.Outlook

Jetzt wird das Projekt nicht kompiliert.

Ich denke, dass meine Anwendung nicht funktioniert, wenn Outlook nicht in der Maschine installiert ist, auf der mein Programm ausgeführt wird.

Ich muss wissen, ob ich Outlook installiert und dynamisch Interop.Outlook.dll (für die Verwendung der Outlook PIA oder Embedded Interop-Typen in .NET 4) laden.

Wenn auf dem Computer Outlook (2003, 2007, 2010, möglicherweise benötigen Code zum Erkennen der Version und Kompatibilität der Outlook-Versionen) installiert ist, funktioniert die Anwendung gut mit funktionierenden Outlook.

Wenn auf dem Computer kein Outlook installiert ist, funktioniert die Anwendung ohne funktionelles Outlook.

Irgendwelche Beispiel Quellcode oder goog Muster und Praktiken darüber ??

Antwort

0

Überprüfen Sie die Installer-APIs, um den Installationsstatus von Outlook zu ermitteln, oder verwenden Sie eine der beschriebenen Methoden 10.

+0

*** "Wenn Sie Microsoft.Office.Interop.Outlook verwenden möchten, sollte die Komponente im System installiert werden. Andernfalls wird es nicht Arbeit." ? *** – Kiquenet

1

Um zu erkennen, dass Outlook installiert ist, suchen Sie nach der ProgID "Outlook.Application". Von einem Installer, schauen Sie in der Registrierung für HKEY_CLASSES_ROOT \ Outlook.Application

Zur Laufzeit wie folgt vorgehen:

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); 
     } 
    } 
} 

Um das Problem der dynamischen Laden der Interop zu vermeiden, sollten Sie "Embed Interop-Typen" gesetzt Für Microsoft.Office.Interop.Outlook.Interop.dll gilt

+0

*** "Wenn Sie Microsoft.Office.Interop.Outlook verwenden möchten, dann sollte die Komponente im System installiert werden. Andernfalls wird es nicht funktionieren." ?*** Ja wirklich? – Kiquenet