2010-07-02 2 views
5

Viene visualizzato questo errore quando si tenta di eseguire il depoly della mia applicazione su un computer di destinazione.System.Runtime.InteropServices.COMException (0x80040154)

I googled e scoperto che alcune delle necessità del dll da registrare (che vengono utilizzati nella mia applicazione)

Così, ho copiato il dll a System32 e ha fatto regsvr32

Poi ho ottenuto questo errore

Interop.ShockwaveFlashObject.dll è stato caricato bt DllRegisterServer il punto di ingresso non è stato trovato. Il file non può essere registrato

E una cosa strana è che l'applicazione non funziona su una sola macchina. Ho provato su 10 macchine diverse e tutto ha funzionato bene. Non ha funzionato su una sola macchina.

Qualcuno può aiutarmi per favore su questo?

+1

Questo potrebbe sembrare stupido, ma che una macchina, è Flash installato? –

+0

Interop.ShockwaveFlashObject.dll sembra non essere una DLL COM ma una libreria di interoperabilità basata su .NET, quindi questo non ha bisogno di essere regsvr32-ed probabilmente. Dovresti invece registrare la libreria COM corrispondente di ShockwaveFlash. – chiccodoro

risposta

2

La DLL di Interop non deve essere registrata, contiene effettivamente un puntatore a un oggetto registrato COM esistente.

Se segue la solita convenzione di denominazione, sembra che ShockwaveFlashObject.dll non sia registrato sulla macchina (questa sarebbe la DLL su cui eseguire regsvr32). Presumibilmente è necessario installare Shockwave/Flash (e/o verificare che la versione installata sia quella giusta se si ritiene che sia già presente sulla confezione).

+0

Non riesco davvero a capire. Ho usato il progetto di installazione per creare l'installazione per la mia applicazione. Ha trovato Flash10a.ocx, AxInterop.ShockwaveFlashObjects.dll e Interop.ShockwaveFlashObjects.dll come dipendenza. E idealmente, l'installazione dovrebbe ora registrarli anche per me. Non è vero? Ho provato a installare di nuovo il Flash Player, ma sto ottenendo sempre gli stessi risultati! – Jayesh

+0

hai registrato Flash10a.ocx con regsvr32.dll? –

+0

@SamHolder sì! Lo sto facendo all'interno dell'applicazione stessa. E quindi, su tutte le macchine è stato registrato e la mia applicazione funziona correttamente. È solo su una macchina che sto riscontrando il problema – Jayesh

0

Quella DLL di interoperabilità non è una DLL COM che deve essere registrata con regsvr32.dll, è una dope di interoperabilità che gestisce il collegamento tra la roba COM e le cose gestite, credo.

probabilmente è necessario registrarsi qualche altro dll (cioè ogni & tutte le DLL COM, probabilmente ShockwaveFlashObject.dll) o avete qualche altra dipendenza mancante. Cosa c'è di diverso nella macchina su cui non funziona rispetto alle macchine su cui lavora? Tutte le dipendenze sono installate su tutte le macchine (come il flash?) Gli OS sono diversi? Forse alcuni nuovi OS non hanno tutte le vecchie dipendenze che hanno le macchine più vecchie.

1

Per esempio, è possibile eseguire cmd come amministratore e selezionare la directory system32 ed eseguire il seguente:

for %1 in (*.dll) do regsvr32 /s %1 

e

for %1 in (*.ocx) do regsvr32 /s %1