| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SolidEdge |
| | |
 | Workshop Digital Product Passport: Verstehen. Umsetzen. Zukunft gestalten., ein Seminar am 01.10.2026
|
|
Autor
|
Thema: Visual Basic.Net AddIn in einem MSI Packet verpacken (395 mal gelesen)
|
progi Mitglied Programmierer

 Beiträge: 74 Registriert: 18.08.2004 VB.net SE 16
|
erstellt am: 14. Jan. 2005 14:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo, wer hat schon mal ein MSI Packet mit dem Visual-Studio erzeugt? Ich muß bestimmte Keys in die Registry eingetragen, dafür gibt es auch einen Editor, jedoch schreibt das MSI Packet in HKEY_USERS rein und nicht wie im Editor dargestellt in die HKEY_CLASSES_ROOT .... Hat einer eine Ahnung warum der das nicht richtig macht? Gruß Andreas ------------------ Besten Dank Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Kreutz Mitglied
  
 Beiträge: 640 Registriert: 11.02.2003 SolidEdge 2021, SolidWorks 2021, Inventor 2020, PRO/E Creo1 und Creo2 VB 6.0 / VB.NET / C#.NET Windows 10 64bit
|
erstellt am: 14. Jan. 2005 16:02 <-- editieren / zitieren --> Unities abgeben:          Nur für progi
Hallo, implementiere einfach 2 neue methoden [System.Runtime.InteropServices.ComRegisterFunctionAttribute()] static void RegisterServer(Type t) { try { RegistryKey baseKey = Registry.ClassesRoot.CreateSubKey("CLSID\\{" + t.GUID.ToString() + "}"); if (baseKey != null) { baseKey.SetValue("AutoConnect", 1); baseKey.SetValue("409", "HITDialog"); baseKey.CreateSubKey("Implemented Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SolidEdgeAddIn); baseKey.CreateSubKey("Environment Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SEApplication); baseKey.CreateSubKey("Environment Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SEAssembly); baseKey.CreateSubKey("Environment Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SEDraft); baseKey.CreateSubKey("Environment Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SEPart); baseKey.CreateSubKey("Environment Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SESheetMetal); baseKey.CreateSubKey("Environment Categories\\" + HITDialog.SolidEdge.CATIDs.CATID_SEWeldment); baseKey.Close(); } } catch (System.Exception e) { MessageBox.Show(e.ToString(), "RegisterServer", MessageBoxButtons.OK, MessageBoxIcon.Error); } } und static void UnregisterServer(Type t) { try { Registry.ClassesRoot.DeleteSubKeyTree("CLSID\\{" + t.GUID.ToString() + "}"); } catch (System.Exception e) { MessageBox.Show(e.ToString(), "UnregisterServer", MessageBoxButtons.OK, MessageBoxIcon.Error); } } und noch einen strong name. Mit regasm wird die Assembly registriert. ------------------ Marco Kreutz info@hitteam.de http://www.hitteam.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
progi Mitglied Programmierer

 Beiträge: 74 Registriert: 18.08.2004 VB.net SE 16
|
erstellt am: 17. Jan. 2005 08:05 <-- editieren / zitieren --> Unities abgeben:         
Besten Dank für die Anwort, die beiden Funktionen habe ich auch in meinem AddIn. Beim Complilieren wird die Funktion auch gestartet, jedoch nicht beim Installieren des MSI Files. Da muß man doch bestimmt noch ein paar Einstellungen vornehmen, es scheint so als ob das regasm beim Installieren nicht gestartet wird? Gruß Andreas ------------------ Besten Dank Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Kreutz Mitglied
  
 Beiträge: 640 Registriert: 11.02.2003 SolidEdge 2021, SolidWorks 2021, Inventor 2020, PRO/E Creo1 und Creo2 VB 6.0 / VB.NET / C#.NET Windows 10 64bit
|
erstellt am: 17. Jan. 2005 08:23 <-- editieren / zitieren --> Unities abgeben:          Nur für progi
Hallo, 2 weitere Dinge sind noch zu beachten: Regasm muss mit Pfadangabe aufgerufen werden - da der Pfad nicht in der Umgebungsvariable steht. Den Pfad findest du in der Registry: HKLM\SOFTWARE\Microsoft\.NETFramework. Beachte noch, dass du noch einen strongname benötigst. Demenstprechend muss regasm mit der Oprion codebase aufgerufen werden - sofern du nichts im GAC installierst.
------------------ Marco Kreutz info@hitteam.de http://www.hitteam.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
progi Mitglied Programmierer

 Beiträge: 74 Registriert: 18.08.2004 VB.net SE 16
|
erstellt am: 17. Jan. 2005 10:05 <-- editieren / zitieren --> Unities abgeben:         
Und wie mache ich das im Visual Studio? Mit dem Aufruf im Kommando-Interpreter regasm [Pfad der DLL] /tlb /codebase wird die Registrierung durchgeführt, blos wie stoße ich das im VS an? Soll ich eine Batch-Datei einfügen, oder geht das auch anders? ------------------ Besten Dank Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Kreutz Mitglied
  
 Beiträge: 640 Registriert: 11.02.2003 SolidEdge 2021, SolidWorks 2021, Inventor 2020, PRO/E Creo1 und Creo2 VB 6.0 / VB.NET / C#.NET Windows 10 64bit
|
erstellt am: 17. Jan. 2005 10:42 <-- editieren / zitieren --> Unities abgeben:          Nur für progi
Hallo, leider weis ich nicht wie man mit MSI arbeitet. Ich erzeuge meine Setup mit http://www.jrsoftware.org/isinfo.php - sehr zu empfehlen und kostet nichts. Wenn du die Möglichkeit hast ein script zu starten, dann kannst du das statement in diese Datei eintragen. Abhängig vom Service Pack für .NET findest du den Pfad in der Registry. Service Pack 1.1 lautet der pfad in der Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322 demnach auf der Platte: %SystemRoot%\Microsoft.net\Framework\v1.1.4322\regasm.exe /CODEBASE /NOLOGO SILENT MyProgram.dll ------------------ Marco Kreutz info@hitteam.de http://www.hitteam.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Kreutz Mitglied
  
 Beiträge: 640 Registriert: 11.02.2003 SolidEdge 2021, SolidWorks 2021, Inventor 2020, PRO/E Creo1 und Creo2 VB 6.0 / VB.NET / C#.NET Windows 10 64bit
|
erstellt am: 18. Jan. 2005 12:16 <-- editieren / zitieren --> Unities abgeben:          Nur für progi
|
progi Mitglied Programmierer

 Beiträge: 74 Registriert: 18.08.2004 VB.net SE 16
|
erstellt am: 19. Jan. 2005 08:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo Marco, besten Dank für den Link. Das hat geklappt. Also ich habe die Klasse einfach in das AddIn Projekt eingebunden und im MSI Projekt im "Editor für benutzerdefinierte Aktionen" im Installationsordner die Primäreausgabe des AddIns als Aktion eingebunden. Das gleiche für Rollback und Uninstall. Dann wird die Registrierung der AddIn Dll angestoßen. Dann gehts! Also besten Dank. Andreas ------------------ Besten Dank Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |