Rileva Outlook installato e carica in modo dinamico INterop.Outlook

Ho un’applicazione Windows Form in VS2010. Ha un riferimento a Interop.Outlook (2003). Quindi, ho reinstallato Windows XP e VS2010, ma non ho installato Outlook.

Ora, il progetto non viene compilato.

Penso che, la mia applicazione non funzionerà se Outlook non è installato sulla macchina su cui il mio programma viene eseguito.

Devo sapere se rilevo Outlook installato e caricare dynamicmente Interop.Outlook.dll (per l’utilizzo del PIA di Outlook o dei tipi di Interop Embedded in .NET 4).

Se la macchina ha Outlook (2003, 2007, 2010, forse ha bisogno del codice per rilevare la versione e fare la compatibilità delle versioni di Outlook), l’applicazione funziona correttamente con Outlook funzionalmente.

Se la macchina non ha installato Outlook, l’applicazione funziona correttamente senza Outlook funzionalmente.

Qualche esempio di codice sorgente o schemi e pratiche goog a riguardo ??

Per rilevare se Outlook è installato, cercare il ProgID “Outlook.Application”.

Da un programma di installazione, cercare nel registro HKEY_CLASSES_ROOT\Outlook.Application

In fase di esecuzione, puoi fare ciò:

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

Per evitare il problema di caricare dynamicmente l’interoperabilità, è necessario impostare Embed Interop Types su true per Microsoft.Office.Interop.Outlook.Interop.dll

controllare le API del programma di installazione per rilevare lo stato di installazione di Outlook o utilizzare uno dei metodi descritti qui .