So registrieren Sie ein .NET CCW mit regasm aus einem Visual Studio 2008 Setup project
Ich habe ein setup-Projekt für eine .NET-Service-Anwendung, die eine .NET-Komponente, welche macht eine COM-Schnittstelle (COM callable wrapper /CCW).
Um die Komponente der Arbeit auf einem Zielrechner registriert mit
regasm.exe /tlb /codebase component.dll
/Tlb-Schalter zum generieren der Typbibliothek ist zwingend notwendig, sonst kann ich Sie nicht erstellen Sie Objekte aus, die Versammlung.
Die Frage ist, wie kann ich konfigurieren mein Visual Studio 2008 Setup-Projekt zu registrieren, diese Versammlung mit einem Aufruf regasm /tlb ?
InformationsquelleAutor Jan | 2008-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verlieren den manuellen Aufruf von regasm.exe durch die Verwendung von System.- Laufzeit.InteropServices.RegistrationServices statt:
Diese hebt auch die Registrierung der Bibliothek auf deinstallieren.
Ich sehe diese beiden Methoden gehen in eine Klasse, die überschreibt System.- Konfiguration.Installieren.Installer, dann ist diese einzelne Klasse Hinzugefügt wird, die als primäre Ausgabe? Ich bin nicht sicher, wie Sie diese Klasse oder diese Aktionen, um den installer. Werden Sie automatisch Hinzugefügt werden, mit der Montage oder brauche ich, um eine Aktion hinzuzufügen?
"I am not sure how to add this class or these actions to the installer."
Finden Sie in der link von Wolfwyrd in einer anderen Antwort, für die details, wie fügen Sie diese zu Ihrem installer-Paket. Diese Antwort ist eine Modifikation des Codes im verlinkten Artikel.Aktualisiert link von Wolfwyrd
InformationsquelleAutor Sean Gough
Überschreiben der Install, Commit und Uninstall-Methoden hinzufügen:
//Liefert Position von regasm
string regasmPath = System.- Laufzeit.InteropServices.RuntimeEnvironment.GetRuntimeDirectory() + @"regasm.exe";
//Holen Sie sich die Lage unserer DLL
string componentPath = typeof(RegisterAssembly).Montage.Lage;
//Ausführen regasm
System.Diagnostik.Prozess.Start(regasmPath, "/codebase /tlb \"" + componentPath + "\"");
Swap /codebase /tlb /u deinstallieren action.
Einen Durchlauf mit einer Klasse, die Sie ausprobieren können, finden Sie unter: http://leon.mvps.org/DotNet/RegasmInstaller.html
InformationsquelleAutor Wolfwyrd
Ihre service sollte eine Installer Klasse.
Registrieren Sie sich in der OnAfterInstall Ereignis und rufen Sie RegAsm: der Weg berechnet werden soll aus dem Windows-Verzeichnis und an einen bestimmten .Net-version.
InformationsquelleAutor
Ich zunächst versucht mit regasm aus dem installer-Prozess (bevor ich sah dieses posting). Versuchen zu laufen regasm , und die Bearbeitung der Fehler war problematisch - auch ohne zu versuchen, zu behandeln erhöhten rechten für Windows 7.
Mit
Runtime.InteropServices.RegistrationServices.RegisterAssembly
war viel sauberer und ein viel bessere Fehlerbehebung.InformationsquelleAutor user911989