Domanda

Ho creato un componente aggiuntivo per Outlook per il 2003, 2007 e 2010. Il componente aggiuntivo funziona correttamente nel 2007 e nel 2010, ma non viene caricato correttamente nel 2003 su macchine diverse dalla mia macchina di sviluppo. Non ci sono problemi di codice, poiché non vengono visualizzati errori nel comportamento di caricamento e non si tratta di un elemento disabilitato. Il componente aggiuntivo non viene inoltre visualizzato nell'elenco dei componenti aggiuntivi COM. Questo componente aggiuntivo ha funzionato in precedenza nel 2003.

Ecco la parte strana. Ho una copia del componente aggiuntivo da un momento precedente, quindi non contiene alcune delle funzionalità della versione completa. Questo componente aggiuntivo viene caricato correttamente nel 2003. Quindi, come parte del mio test, su una VM, ho installato la versione precedente (la chiamerò test ) e la versione corrente che non funziona ( Lo chiamerò completo ). Nel registro in HKCU> Software> Classi> CLSID> [[guid]]> InprocServer32, per la versione test ho modificato le chiavi "Manifest Location" e "Manifest Name" in modo che siano i valori del versione completa . Poi ho eseguito Outlook e la versione completa ha funzionato perfettamente.

Non riesco a vedere come il componente aggiuntivo completo non funzioni con le impostazioni del registro di sistema, ma funziona bene con quelle di test e solo su Outlook 2003 .

Ecco le informazioni di base:

La mia configurazione di sviluppo è:

  • Windows 7 a 64 bit
  • Outlook 2003 installato
  • Esecuzione di VS2008 per il progetto del componente aggiuntivo, ma anche utilizzo di VS2010 per un assembly satellite.
  • Il progetto Set Security è incluso e modificato per consentire a più assembly di impostare CASPol.

I seguenti requisiti preliminari sono inclusi nel progetto di installazione:

  • .Net 2.0
  • .Net 3.5SP1
  • PIA di Office 2003 (anche PIA 2007 e 2010 rispettivamente per il 2007 e il 2010)
  • Runtime VSTOSE
  • Windows Installer 3.1

Qualsiasi suggerimento sarebbe molto apprezzato, poiché ho trascorso quasi 4 giorni su questo problema!

TIA.


Aggiorna 1:

Secondo i commenti di @JoaoAngelo, ho controllato le impostazioni del registro e sono le seguenti:

HKCU> Software> Classi> CLSID> {add-in CLSID}> InprocServer32

 - (default) - '%CommonProgramFiles%\Microsoft Shared\VSTO\8.0\AddinLoader.dll'
 - ManifestLocation - path to the containing folder
 - ManifestName - the .dll.manifest file name
 - ThreadingModel - 'Both'

HKCU> Software> Microsoft> Office> Outlook> Addins> MyAddin

 - (default) - not set
 - CommandLineSafe - '1'
 - Description - a string
 - FriendlyName - add-in ID
 - LoadBehavior - '3' (this never gets set to 2, which would indicate an issue)
 - Manifest - path to the .dll.manifest of the add-in assembly
 - Path - path to the containing folder

Ho anche aggiunto quanto segue sotto quest'ultimo, come da pagina di distribuzione , ma inutilmente:

 - ManifestLocation 
 - ManifestName

Aggiornamento 2:

Come da commenti 0xA3; In HKCR> MyAddin ho una chiave CLSID con un singolo valore di stringa:

(default) - {add-in CLSID}

Il CLSID è lo stesso visto in HKCU> Software> Classi> CLSID e in tutto il registro.

È stato utile?

Soluzione

Sono finalmente riuscito a trovare il problema, era correlato al registro.

Inizialmente avevo pianificato di avere componenti aggiuntivi separati per ogni versione di Outlook e, pertanto, i miei spazi dei nomi e le convenzioni di denominazione ecc. erano:

  • [Azienda] .AddIns.Outlook2003
  • [Azienda] .AddIns.Outlook2007
  • [Azienda] .AddIns.Outlook2010

Tuttavia, sono riuscito a creare il componente aggiuntivo per indirizzarli a tutti e tre, quindi ho rinominato [Company] .AddIns.Outlook2003 in [Company] .AddIns.Client.

Avevo cambiato le impostazioni del registro per HKCU> Software> Microsoft> Office> Outlook> Addins> MyAddin, per fare riferimento alla modifica descritta, ma per qualche motivo non l'ho aggiornato in HKCU> Software> Classes.

Non appena ho modificato le ultime impostazioni in VS, ha funzionato!

Per riferimento, le modifiche sono state apportate in VS nel progetto di installazione, in Visualizza> Registro.

Un po 'fastidioso che questo problema non si sia verificato nel 2007/2010, in quanto potrebbe essere stato più facile da rintracciare.

Altri suggerimenti

Se non l'hai già fatto, dovresti impostare le seguenti variabili d'ambiente per aiutarti nella risoluzione dei problemi di caricamento dei componenti aggiuntivi:

  • VSTO_LOGALERTS=1
  • VSTO_SUPPRESSDISPLAYALERTS=0

Il primo comporterà la creazione di un file * .log nella directory contenente gli assembly di componenti aggiuntivi e il secondo consentirà la visualizzazione di popup di errore all'avvio dell'applicazione di destinazione, in questo caso Outlook.

Dici anche che nella tua casella di sviluppo con Office 2003 l'addin funziona correttamente. Poiché Visual Studio registra automaticamente il componente aggiuntivo nella casella di sviluppo quando si esegue una compilazione, è necessario assicurarsi di creare tutte le chiavi di registro necessarie nel programma di installazione. Puoi controllare la sezione Voci di registro richieste nel seguente articolo di MSDN per verificare di avere le chiavi corrette in fase di installazione:

Distribuzione di componenti aggiuntivi a livello di applicazione

Ti consiglio di seguire i passaggi per la risoluzione dei problemi descritti qui:

Hamed Ahmadi: il componente aggiuntivo di Office non viene caricato!

Sei sicuro che l'addin non sia stato disabilitato da Outlook per qualche motivo?Se lo hai installato a livello macchina (al contrario del livello utente) non verrà visualizzato nell'elenco dei componenti aggiuntivi Com in ogni caso.Forse provare a installarlo come un componente aggiuntivo per utente (in modo che venga visualizzato nell'elenco) e procedere da lì?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top