Announcement

Collapse
No announcement yet.

Registrierung eines Com-Servers

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Registrierung eines Com-Servers

    Hallo,

    ich habe mit C# ein Addin für ein bestimtmes Programm entwickelt. Dieses Addin muss als Com-Server registriert werden. Ich habe dazu die DLL und die TLB. Das Registrieren funktioniert mit RegAsm. Soweit so gut. Jetzt möchte ich allerdings ein Setup erstellen, damit die Installation und somit auch der Registrierungsvorgang automatisch ablaufen.

    Wie kann ich hierbei am besten vorgehen. Denn RegAsm wird vom System standardmäßig nicht gefunden ?!? Bisher habe ich immer den VS2005 Command Prompt verwendet. Darin gehts ja. Hinzu kommt ja noch das auf dem Zielrechner verschiedene .NET Installationen vorhanden sein können. Wie ist also euer Vorschlag hierzu?
    Jetzt kann ich natürlich den Pfad "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 " fest angeben. Aber dieser erscheint mir so Systemabhängig zu sein und somit als keine gute Lösung?

    Bin für jede Hilfe dankbar.

    Viele Grüße, Andreas

  • #2
    Hallo,

    wenn ein eigenes MSI-Setup vorgesehen ist, reicht es aus, dort eine eigene Installer Class einzubinden, die die von der Klasse System.Configuration.Install.Installer geerbten Methoden Install und Uninstall überschreibt. Das Kommandozeilen-Tool RegAsm.exe greift auch nur auf die Klasse RegistrationServices aus dem Namespace System.Runtime.InteropServices zurück, so dass die eigene Installer-Nachfolgerklasse den gleichen Job erledigen kann:

    Code:
      Assembly aAsm;
      aAsm = Assembly.GetCallingAssembly();
      RegistrationServices aRegSrvc = new RegistrationServices();
      aRegSrvc.RegisterAssembly(aAsm, AssemblyRegistrationFlags.SetCodeBase);
    Wenn der Anwender das Programm über die Systemsteuerung | Software wieder de-installiert, sollte die eigene Installer-Nachfolgeklasse auch wieder aufräumen:

    Code:
    public override void Uninstall(IDictionary savedState)
    {
    	Assembly aAsm;
    	aAsm = Assembly.GetCallingAssembly();
    	RegistrationServices aRegSrvc = new RegistrationServices();
    	aRegSrvc.UnregisterAssembly(aAsm); 	
    }

    Comment

    Working...
    X