2010-12-12 8 views
2

J'ai une application Windows Forms dans VS2010. Il fait référence à Interop.Outlook (2003). Ensuite, j'ai réinstallé Windows XP et VS2010, mais pas installé Outlook.Détecter Outlook installé et charger dynamiquement INterop.Outlook

Maintenant, le projet ne compile pas.

Je pense que mon application ne fonctionnera pas si Outlook n'est pas installé sur la machine sur laquelle mon programme s'exécute.

J'ai besoin de savoir si je détecte Outlook installé, et charger dynamiquement Interop.Outlook.dll (pour utiliser les types Outlook PIA ou Embedded Interop dans .NET 4).

Si la machine a Outlook (2003, 2007, 2010, peut-être besoin de code pour détecter la version et faire la compatibilité des versions d'Outlook) installée, l'application fonctionne correctement avec Outlook fonctionnellement.

Si la machine n'a pas Outlook installé, l'application fonctionne correctement sans Outlook fonctionnel.

N'importe quel exemple de code source ou de modèles de goog et de pratiques à ce sujet?

Répondre

0

Vérifiez les API du programme d'installation pour détecter l'état d'installation d'Outlook ou utilisez l'une des méthodes décrites here.

+0

*** "Si vous voulez utiliser Microsoft.Office.Interop.Outlook, alors le composant doit être installé dans le système. travail." ? *** – Kiquenet

1

Pour détecter Outlook installé, utilisez l'option "Outlook.Application" ProgID. D'un installateur, regardez dans le registre HKEY_CLASSES_ROOT \ Outlook.Application

Lors de l'exécution, procédez comme suit:

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

Pour éviter le problème de chargement dynamique Interop, vous devez définir « Intégrer Interop Types » à true pour Microsoft.Office.Interop.Outlook.Interop.dll

+0

*** "Si vous voulez utiliser Microsoft.Office.Interop.Outlook, alors le composant doit être installé dans le système, sinon il ne fonctionnera pas." ?*** vraiment? – Kiquenet

Questions connexes