| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: AddIn Registrieren (3366 mal gelesen)
|
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 10. Jan. 2006 16:11 <-- editieren / zitieren --> Unities abgeben:
Hi zusammen! Hab wieder mal ein kleines Problem! Ich habe auf meinem Rechner Ein VB.Net AddIn für IV10 geschrieben! Auf meinem PC funktioniert dieses auch, doch bei meinem Kollegen nicht! Ich habe alle Dateien aus dem Bin Ordner von meinem Rechner auf den Rechner meines Kollegen kopiert und mir Regasm.exe registriert! nach einem PC neustart habe ich IV geladen doch das AddIn funktioniert nicht! Bei den Zusatzmodulen wird das AddIn als Gestartet aber nicht als geladen angezeigt! Muss ich möglicherweise den Ganzen Projektordner kopieren oder reichen die Dateien aus dem Bin Ordner? Mein Kollege hat auch nicht Windows XP sondern Windows 2000 oder ist das möglicher wiese das Problem? Bitt um Hilfe!! Vielen Dank im Voraus mfg Bernhard
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Jan. 2006 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Hallo Bernhard, es wäre mal interessant zu wissen aus welchem Ordner in Bin (Release oder Debug) du die Dateien kopiert hast, und welche die sind (interops, tlbs, … . Es gibt ein paar Sachen, die als mögliche Ursache in Betracht kommen:
- Bis gestern dachte ich, dass deine DLL vom System gefunden wird, da es in Inventor als gestartet gilt, aber dieser Gedankengang kann auch falsch sein, denn maßgebend für den Eintrage „Gestartet“ oder nicht, in Inventor ist ein Registry Eintrag. Das aber noch nicht heißt, dass das System auch deine DLL findet. Deshalb der erste Tipp: Benutze die RegAsm.exe mit dem CodeBase Parameter. Das bewirkt, dass in der Registry der Pfad zur deiner DLL geschrieben wird, und somit das System auch deine Assembly findet.
- Häufige Ursache bei deiner Situation (Start/Nicht geladen) ist die FirstTime Variable die in der Activate benutzt wird. Die Variable ist für das erstellen vom Werkzeugkasten zuständig. Beim ersten Mal wird in der Registry deine CLSID in dem Schlüssel: HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion10.0\UI Customization V3\Command Owner IDs\ nicht gefunden, und der Code, der sich innerhalb der FirstTime Variable befindet, ausgeführt. Geht da irgendwas schief (vor oder nach dem Erstellen von der Werkzeugleiste), steigt das Programm in der Activate aus, und der CLSID Eintrag bleibt in der Registry. Sobald ein AddIn abstürzt, bleibt auch der Inventor nach dem Beenden in dem TaskManager und muss als Prozess beendet werden, und somit kann er deinen CLSID Eintrag aus der Registry entfernen. Ist halt ein Schwachpunkt in der Inventor Programmierung. Abhilfe: Deinen CLSID (oder GUID) Eintrag aus dem o.g. RegKey manuell löschen. Ebenfalls Prüfen ob unter: HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion10.0\UI Customization V3\ToolBars\ deine Werkzeugleiste erstellt wurde, und gegebenenfalls auch löschen.
- Die dritte Möglichkeit ist, dass während der Activate etwas schief läuft und die Assembly wird einfach nicht geladen. Abhilfe: Das Einbauen von einer Log Funktion. Ich habe hier eine Log Funktion gepostet (und kein Feedback bekommen ob es funzt oder nicht *hust*). Logge einfach jeden Schritt in deiner Activate, dann siehst du es wo es aufhört zu loggen. Du kannst auch die Exception mit rein schreiben, usw. Möglicherweise fällt einfach ein BMP für dein Button.
Und vergiss bitte nicht Bescheid zu geben, ob und was geholfen hat. Das hilft in Zukunft den Usern mit den gleichen Problemen HTH
------------------ Grüße daywa1k3r FX64 Software Solutions Mold&More Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 12. Jan. 2006 11:20 <-- editieren / zitieren --> Unities abgeben:
Hi Daywalker! Dann dürfte bei mir son ein fehler auftreten! Denn immer wenn ich _IV Schließe bleibt er im Taskmanager stehen!! Und auch bei einem meiner Addins kommen die Icons erst nachdem der Startdialog (datei öffnen, neue datei...)! Und ich kann auch im Zusatzmodule Manager das häkchen abwählen, dass es nicht bein starten ausgeführt wird, doch beim Staten ist es wieder da! Das heißt irgendetwas passt IV nicht an meinen AddIns, obwohl diese einwandfrei funktionieren! die Bilder sind auch alle da, an das hab ich auch schon gedacht! ich werd jetzt dann mal die Log Funktion Testen! Ich schau mir nochmal den vb code an und werd auch nochmal alles durchschauen, was mir noch einfällt! Werd dann wieder bescheid geben! Danke vorerst!! mfg Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 12. Jan. 2006 13:07 <-- editieren / zitieren --> Unities abgeben:
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Jan. 2006 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
|
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 12. Jan. 2006 14:47 <-- editieren / zitieren --> Unities abgeben:
Hi daywalker! Sorry hab noch nie ne Bat Datei geschrieben! muss ich da sonst noch was eintragen oder reicht z.B. die von dir genannte Zeile? ___________________________________________________________ Hab es mit deiner Log-Funktion versucht! hat leider nicht funktioniert! Jetzt bekomme ich immer beim Starten von drei meiner AddIns eine Fehlermeldung (Unbekannter Fehler) doch sie funktioniren trotz dem!!?? hab jetzt keine Ahnung mehr, weshalb das so ist? Schau mir alles jetzt dann nochmal durch!! Vielen Dank! mfg Bernhard [Diese Nachricht wurde von BernhardU am 12. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Jan. 2006 15:03 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Diese Zeile reicht, sofern du eine Assembly namens DeineAssembly.dll mit der Option CodeBase registrieren willst. Einfach eine neue Textdatei erstellen, die Zeile rein schreiben und mit Endung .bat abspeichern. In dem Ordner müssten dann die folgende Dateien sein: regasm.exe (die könntest du auch aus dem Framwork Verzeichnis holen, aber zum testen kopiere die Datei einfach in das Verzeichnis wo sich die andere Dateien befinden DeineAssebly.dll Deine.bat Wenn du die bat jetzt doppelklickst, geht ein DOS Fenster auf, und die Assembly wird registriert. ------------------ Grüße daywa1k3r
FX64 Software Solutions Mold&More Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 12. Jan. 2006 15:44 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank!! Hab es jetzt so gemacht! regasm.exe Teilebaum.dll /CodeBase Doch muss ich da nicht auch die restlichen dll Dateien aus dem bin Ordner eintragen lassen? Auf einem anderen PC kann es doch sein, dass die Dll Dateien nicht vorhanden sind!! Kann ich das dann einfach so lösen? regasm.exe DeineAssemlby1.dll /CodeBase regasm.exe DeineAssemlby2.dll /CodeBase regasm.exe DeineAssemlby3.dll /CodeBase regasm.exe DeineAssemlby4.dll /CodeBase Irgendetwas dürfte noch immer nicht ganz passen!! Es kommt zwar keine Fehlermeldung mehr doch IV10 bleibt trotz dem im Taskmanager offen, doch bei menem Kollegen nicht!! Vielen Dank!!! Mfg Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Jan. 2006 16:16 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
|
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 12. Jan. 2006 16:54 <-- editieren / zitieren --> Unities abgeben:
Hi deine Funktion funktioniert bis auf den aufruf CreateLogPath der verursacht einen Fehler!! sonst passt alles! konnte leider noch nicht den Fehler Finden!! Doch ich bin durch zufall drauf gekommen, dass nur ein AddIn fehlerhaft ist! denn als das eine AddIn durch deine Funktion nicht funktioniert hat war IV nach dem Schließen nicht mehr im Taskmanager!! Also hat auch das was gutes dass deine Funktion CreateLogPath bei mir nicht funktioniert hat!! Doch mittlierweile gehen mir die Ideen aus, was noch schuld daran sein könnte, dass das AddIn einen Fehler verusacht! Vielen dank!! mfg bernhard PS: Warum kann ich dir eigentlich nur für eine Antwort 10 Unites geben! Ich wollte dir für jede Antwort 10 geben! hat nicht funktioniert! das kann nicht ganz stimmen oder? [Diese Nachricht wurde von BernhardU am 12. Jan. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 12. Jan. 2006 18:07 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Hallo, wahrscheinlich hast du vor der CreateLogPath() nicht die CreateLogFileName() aufgerufen. Im Prinzip brauchst du das alles nicht, und du kannst die: CreateLogPath, CreateLogFileName und den Rest raus schmeißen. Dein Modul kann zum Testzwecke ruhig so aussehen: Code:
Imports System Imports System.IOModule Module1 Private sFile As String = "C:\Log_File.txt" Public Sub Log(ByVal sString As String) Dim sw As StreamWriter = File.AppendText(sFile) If sString = "" Then sw.WriteLine("") Else sw.WriteLine("[" & DateTime.Now & "]" & vbTab & sString) End If sw.Flush() sw.Close() End Sub End Module
Dann schreibt er es halt in die C:Log_File.txt rein. Das ist egal. Was die Unities betrifft, reichen 10 völlig. Hauptsache ich bekomme nicht das Gefühl ein Selbstgespräch zu führen ------------------ Grüße daywa1k3r
FX64 Software Solutions Mold&More Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 13. Jan. 2006 10:33 <-- editieren / zitieren --> Unities abgeben:
Hi! Die Funktion hat funktioniert! nur ich musst einfach das Eintragen deiner Überschrift usw. weglassen! Doch gestern hab ich nichts finden können! Heute funktioniert alles! Auch IV ist nach dem schließen nicht mehr in Tast Manager!! Doch ich hab noch immer keine ahnung, warum das AddIn bei meinem Kollegen nicht kunktioniert!! muss mich einfach noch mehr spielen!! mfg Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 13. Jan. 2006 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Zitat: Original erstellt von BernhardU: Doch ich hab noch immer keine ahnung, warum das AddIn bei meinem Kollegen nicht kunktioniert!!
Hi, die Version mit der Logfunktion auf dem Zielrechner probieren, und schauen was die Logdatei sagt. Musst du als erstes in der Activate einen Log Eintrag schreiben lassen. Wenn dann in der Log nichts drin steht, dann ist das Problem vor der Activate und damit schon bei der Registrierung von AddIn. Und nicht vergessen, immer die Registry Einträge (OwnerId's und ToolBars) zu löschen, bevor du einen neuen Versuch startest, sonst ist es nicht sehr relevant.
------------------ Grüße daywa1k3r FX64 Software Solutions Mold&More Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 18. Jan. 2006 11:52 <-- editieren / zitieren --> Unities abgeben:
Hi daywalker! Hatte erst jetzt wieder Zeit mich um die AddIns zu kümmern! Ich hab jetzt versuch drei AddIns bei meinem Kollegen zu installieren! Doch es ist wiedermal was tolles eingetreten!! Eines der AddIns wird im Zusatzmodulmanager gar nicht angezeigt!! Die anderen zwei werden anls geladen und gestartet angezeigt, doch die Button und die Menüleiste werden nicht erzeugt! Die Buttons werden nicht mal bei den Zusatzmodulen im Anpassenmenü angezeigt!! Doch die Icons für die Buttons sind im richtigen Pfad vorhanden! Ich werd das jetzt dann nochmal mit der logdatei austesten! doch ich hab echt keine Ahnung mehr! Ich werd dann auch noch versuchen den Firststart in der Registry wieder zu löschen! Mfg Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 20. Jan. 2006 11:58 <-- editieren / zitieren --> Unities abgeben:
Hi daywalker! Habe die AddIns jetzt mit deiner Log Funktion getestet! Bei mir Funktioniert alles einwandfrei! Doch bei meinem Kollenen wurde werde das Log Verzeichnis angelegt noch die Logfile geschrieben! Anscheinend wird da nichtmal die Activate Funktion aktiviert! Doch im Zusatzmodulmanager sind zwei der drei AddIns Geladen und gestartet und das dritte geladen, kann aber nicht gestartet werden! Woran kann es liegen, dass sie nichteinmal gestartet werden? Ich hab echt keine Ahnung mehr! Kann es an den unterschiedlichen Betreibssystemen liegen? Ich habe WinXP mein Kollege Win2000 Hast du noch einen Verdacht, was da nicht stimmen könnte? Ich hab mir schon überlegt einfach VB.Net zu installieren um die AddIns zum Laufen zu bringen!!? ?? ?? Vielen DANK! mfg Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 22. Jan. 2006 16:45 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Hm, so aus der Ferne… Also das Problem AddIn ist in Zusatzmodulen als „Beim Starten laden“ aktiviert. Heißt, dass Inventor versucht den zu laden, und die Registrierung auf Inventor Seite OK ist. Unter „Geladen / Nicht geladen“ ist er aber als „Nicht geladen“. Heißt, es kommt beim Laden ein Fehler vor. Die Log Datei, die in der Activate angelegt werden sollte, wird nicht angelegt. Also dein AddIn kommt bis Activate, sprich der Einstiegspunkt, gar nicht hin. Also, dann muss der Fehler schon vor deinem Einstiegspunkt, z.B. beim Einbinden von deinen Verweisen, passieren. Was hast du unter den Verweisen drin? Sind diese Komponenten auch auf dem Zielrechner vorhanden und registriert? Ein Screenshot von deiner Verweisliste, den Daten die du nach dem Kompilieren auslieferst, und deiner BAT Registrierungsdatei wären von Vorteil. Ich denke, dass der Fehler darin liegt. ------------------ Grüße daywa1k3r FX64 Software Solutions Mold&More Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 23. Jan. 2006 09:45 <-- editieren / zitieren --> Unities abgeben:
|
rtend12 Mitglied Dipl.-Ing. (FH) Maschinenbau / Konstrukteur
Beiträge: 436 Registriert: 21.07.2004 Catia V5 (R16SP5, B18SP5) VB.Net 2003
|
erstellt am: 25. Jan. 2006 20:02 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Hallo BernhardU, hatte das gleiche Problem. Auf meinem Rechner, Visual Studio ist installiert, lief alles super. Auf einem Rechner ohne Visual Studio ging aber gar nix. Das Problem war, dass Microsoft.VisualBasic.Compatibility nur auf einem Rechner mit Visual Studio, nicht im Framework, vorhanden ist. Die Microsoft.VisualBasic.Compatibility sollte laut MSDN auch nicht für Neuentwicklungen verwendet werden, sie wird eigentlich zum importieren von VB6-Code in VB.Net gebraucht. Wozu nutzt du die Microsoft.VisualBasic.Compatibility? Zur Button-Definition? Da hab ich so, stammt nicht von mir, ersetzt: Code: [/CODE]Dim oBig As Image oBig = System.Drawing.Image.FromFile(opathbmp) 'oIconBig = VB6.ImageToIPictureDisp(oBig) oIconBig = ImageToPictureConverter.Convert(oBig) #Region "ImageToPictureConverter" Public NotInheritable Class ImageToPictureConverter Inherits System.Windows.Forms.AxHost Private Sub New() MyBase.New(Nothing) End Sub Public Shared Function Convert(ByVal image As System.Drawing.Image) As stdole.IPictureDisp Return CType(System.Windows.Forms.AxHost.GetIPictureDispFromPicture(image), stdole.IPictureDisp) End Function End Class #End Region [CODE]
Hast du in deiner dll vielleicht zufällig ein UserForm, damit hab ich nämlich ein Problem. tend12 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 25. Jan. 2006 23:15 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Zitat:
Das Problem war, dass Microsoft.VisualBasic.Compatibility nur auf einem Rechner mit Visual Studio, nicht im Framework, vorhanden ist. Die Microsoft.VisualBasic.Compatibility sollte laut MSDN auch nicht für Neuentwicklungen verwendet werden, sie wird eigentlich zum importieren von VB6-Code in VB.Net gebraucht.
Ja, das klingt plausibel, und passt in die Fehleranalyse. ------------------ Grüße daywa1k3r FX64 Software Solutions Mold&More Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |