COM Object funktioniert nicht auf anderen Rechnern

10. Juni 2011 13:32

Hallo zusammen,
ich habe gestern mein erstes COM Object für Navision geschrieben.
Leider habe ich dafür keine vernünftige (aktuelle) Anleitung gefunden. Wenn jemand dazu eine hat wäre ich sehr dankbar :wink:

Zu meinen Problem. Ich habe die DLL auf meinem Rechner erfolgreich mit regasm.exe registrieren können und kann die Funktion nun auch in NAV nutzen.
Leider funktioniert das ganze aber nur auf meinem Rechner.
Heute morgen wollte ich dann versuchen, das ganze in einer Kundendatenbank an unserem Entwicklungsserver zu testen. Hier geht es leider nicht.
Registrieren kann ich die DLL. Die zugehörige Codeunit lässt sich dann auch Compilieren. Nur wenn ich die Funktion dann nutzen möchte bekomme ich folgende Fehlermeldung.

Für das OLE Control oder den Automation Server ...... 'NavAutomation'.Geocoding konnte keine Instanz erstellt werden.
Prüfen Sie, ob das OLE Control oder der Automation Server korrekt installiert und registriert wurde.

Da ich mit dem ganzen Thema sowieso noch nicht so vertraut bin, bringt mich die Fehlermeldung schon allmählich zum verzweifeln.

Entworfen habe ich das ganze ursprünglich in VB.net mit VS 2010 Professional. Die ich die ausgespuckte DLL aber nicht nutzen konnte, habe ich meinen VB Code in C# Code umgewandelt und in ein Beispiel COM Objekt aus dem Internet kopiert. Das funktioniert nun so an meinen Rechner...

Ich hoffe es kann mir jemand weiterhelfen oder mal eine aktuelle grundsätzliche Anleitung zum erstellen von COM Objekten empfehlen.

Vielen Dank im Voraus schon mal!!

Re: COM Object funktioniert nicht auf anderen Rechnern

10. Juni 2011 13:39

z.B.

http://msdn.microsoft.com/en-us/library/aa973247.aspx

Re: COM Object funktioniert nicht auf anderen Rechnern

10. Juni 2011 17:27

Ohne das Problem genau zu sehen hier ein paar Hinweise:
- Stell die Komponente auf 32 Bit! Falls der Server eine 64 Bit Maschine ist, laesst er diese dann im WoW Modus laufen (Windows on Windows, nichsts anderes liebe Gamer ;))
- Deregisriere deine Dll nochmal sauber auf der Dev Maschine und installiers neu!
- Achte darauf das du die richtige DLL genommen hast. Falls du dein Projekt auf "released" gestellt hast, speichert er die kompilierte Version in einem anderen Verzeichnis

das sind die Dinge die mir spontan einfallen. Ich hoffe das ich damit evtl. helfen konnte.

Re: COM Object funktioniert nicht auf anderen Rechnern

10. Juni 2011 20:27

Da die Registrierung ja funktioniert und sich die Codeunit compilieren lässt, kann es nur noch daran liegen, dass die DLL nicht gefunden wird. Versuchs mal im GAC oder auch im Client-Verzeichnis.

Re: COM Object funktioniert nicht auf anderen Rechnern

11. Juni 2011 07:18

Guten Morgen,

1. Hast Du auch alle notwendingen Dateien auf dem Server? Ich meine auch die, auf die Dein Programm verweißt?
2. Warum bist Du nicht bei VB geblieben, wenn C# Dir völlig unbekannt ist?
3. Dein Entwicklungsrechner ist nicht rein zufällig ein Win7-64? Falls ja, dann hatte ich das Problem auch schon. Ich habe dann einfach eine 32-bit VM auf meinem Rechner installiert und das Programm noch einmal darauf kompiliert. Dann klappte es auch mit NAV.
4. In VS2010 gibt es auch Setup-Projekte. Damit kann man solche Sachen auch gut installieren.

Volker

Re: COM Object funktioniert nicht auf anderen Rechnern

14. Juni 2011 13:15

Vielen Dank für eure zahlreichen Antworten!
Ich hab die Anwendung nun auf 32 Bit umgestellt und es nun auch geschafft, das ganze mit VB zum laufen zu bekommen.
(Ich denke das hat am fehlenden Haken bei "für COM-Interop registrieren" gelegen).

Es ist dann immerhin schon einmal auf einem frisch installierten XP auch gelaufen. Auf einem anderen XP Rechner aber nicht.
Hier hat dann der Tip mit neu kompilieren auf einem 32 Bit Rechner geholfen :wink:
Mein Entwicklungssystem ist ursprünglich wirklich ein Win 7 64 Bit gewesen.

Ich habe aber nun aber noch das Problem, dass es auf Windows Server 2003 und 2008 nicht läuft. Ist aber nötig, da das ganze ja auch am Terminalserver laufen soll...
Die DLL habe ich mit der Regasm.exe registriert wie auf den anderen Maschinen auch.
Fehlermeldung ist die gleiche wie anfangs.

Hat hier vielleicht noch jemand einen Tip für mich?
Gacutil.exe habe ich auch schon probiert. Bricht aber mit einem Unknown Error ab...

VG Alex

Re: COM Object funktioniert nicht auf anderen Rechnern

14. Juni 2011 15:41

Ich habe es nun endlich geschafft und es läuft auch auf den Servern.
Er hatte die DLL anscheinend wirklich nicht gefunden. Ich habe Sie jetzt direkt ins Clientverzeichnis gelegt. Dort wo auch die fin.exe zu finden ist.
Vorher hatte ich nur in den Order 60 (bei NAV2009) oder ins System32 gelegt.

Nun geht es endlich :mrgreen:

Einziges was noch nicht geht, ist vom RTC aus. Ist in diesem Fall zwar noch nicht so wichtig aber ich wüsste trotzdem gerne wieso?

VG Alex

Re: COM Object funktioniert nicht auf anderen Rechnern

16. Juni 2011 22:05

Vielleicht wird die DLL im RTC bzw. NAV Server auch nicht gefunden. Dort hast du 2 verschiedene Verzeichnisse und ggf. zwei verschiedene Rechner auf denen die DLL liegen müsste/sollte. Ich empfehle ja immer den GAC. Dafür muss die DLL aber mit einem starken Namen versehen sein.

Vielleicht hilft dir dieser Thread weiter: viewtopic.php?f=14&t=2423