| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: DLL wird nicht geladen nach AutoCAD-Neustart (1172 mal gelesen)
|
NL-AC Mitglied Ingenieur
Beiträge: 86 Registriert: 26.08.2005
|
erstellt am: 26. Mai. 2015 12:01 <-- editieren / zitieren --> Unities abgeben:
Hallo, sich stehe vor folgendem Problem mit AutoCAD 2015: ein .NET-Addin wird per Autoloader (.bundle) geladen und funktioniert erst mal wunderbar. Beendet man AutoCAD und startet es gleich wieder, wird das Addin nicht geladen. Habe herausgefunden, dass nach dem Beenden von AutoCAD immer noch der Prozess ACAD.EXE einige Zeit im Taskmanager aktiv ist. Wie lange, hängt offenbar von der Rechnerperformance ab. Solange der Prozess noch aktiv ist, kann zwar ein neues AutoCAD gestartet werden, das Addin wird aber nicht geladen. Das Addin kann dann nur per Netload manuell nachgeladen werden. Das passiert nicht nur mit meinen selbstgeschriebenen Addins, sondern auch mit dem mitinstallieren Beispiel von Autodesk (ImportSkp.bundle). Kennt jemand das Verhalten oder gar eine Lösung? Gruß Norbert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 26. Mai. 2015 12:16 <-- editieren / zitieren --> Unities abgeben: Nur für NL-AC
|
NL-AC Mitglied Ingenieur
Beiträge: 86 Registriert: 26.08.2005
|
erstellt am: 26. Mai. 2015 13:05 <-- editieren / zitieren --> Unities abgeben:
Genau den Registry-Krams wollte ich ja vermeiden. Dann geht's ja wieder los, welche AutoCAD-Version, welche Sprache wird verwendet etc. Und warum in die DLL? Dann kann ich's doch gleich in ein Installationsscript packen. Oder versteh ich da was falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 26. Mai. 2015 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für NL-AC
... einer der beiden folgenden Aufrufe (abhängig von der AutoCAD-Version) ermittelt dir den Exakten Pfad des gestarteten AutoCADs in der Registry. Code:
Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.Current.GetType().GetProperty("RegistryProductRootKey").GetValue(AcDb.HostApplicationServices.Current, null).ToString(); Autodesk.AutoCAD.DatabaseServices.HostApplicationServices.Current.GetType().GetProperty("MachineRegistryProductRootKey").GetValue(AcDb.HostApplicationServices.Current, null).ToString();
Du musst also nichts ermitteln, da du damit immer im korrekten Registry-Pfad 'landest'. Installationsscript ist dagegen richtig aufwändig, da dort eben genau die AutoCAD-Version/Sprache/Vertikalprodukt bekannt sein müssen. (Für Inno-Setup haben wir uns die Arbeit gemacht und ein Script erstellt, dass alle verschiedenen Sprachversionen/Applikationsprodukte durchtestet. und wenn vorhanden eben in jedem Pfad die Einträge schreibt. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
NL-AC Mitglied Ingenieur
Beiträge: 86 Registriert: 26.08.2005
|
erstellt am: 26. Mai. 2015 13:39 <-- editieren / zitieren --> Unities abgeben:
OK, das heißt, ich bring das Teil als Bundle ins AutoCAD, dort werden beim ersten Aufruf die Reg-Einträge für den "altmodischen" Autoload geschrieben, und ab dann hab ich eine redundante Lade-Prozedur. Nicht schön, aber wenn es funktioniert und sich nicht gegenseitig beißt, bau ich das so ein. Warum das Verhalten so ist, weißt Du aber nicht? Gruß Norbert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 26. Mai. 2015 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für NL-AC
... mit der Bundle-Geschichte tue ich mich schwer. Da man dafür immer eine CUI erstellen muss, die XML-Datei entsprechend erstellen ... Deshalb erstelle ich keine Bundle's. In meinen Tools habe ich immer die Autoload-Registrierung drinn, die Eintragung des Installationsverzeichnis in den TrustedPaths und auch die Implementierung eines Buttons in den Ribbons bzw. wenn nicht vorhanden, auch die Erstellung einer Ribbon-Registerkarte. Somit integrieren sich die Tools völlig unabhängig von der Autodesk-Bundle.Technologie. Das Setup erledigt die Registrierung für den Autoload, so dass die Tools auch nach einem AutoCAD-Neustart direkt zur Verfügung stehen. Da wir die Tools gleichermaßen für BricsCAD und auch ZwCAD erzeugen ist unser Verfahren in allen CAD-Systemen gleich. Fazit: Warum das so ist, kann ich dir nicht sagen. Nur aus der Erfahrung meiner Experimente mit dem Bundle-Zeugs weiß ich, dass die Registry-Variante sicherer funktioniert. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |