Registrierung von Assembly: Unterscheid regasm zu Windows Installer
-
Hallo,
ich habe ein Problem beim Registrieren von Assemblies:
In unserem Setup Projekt haben wir vorher keine Assemblies gehabt, was sich nun geändert hat. Dlls wurden bisher auf andere Weise registriert (Tabelle isselfreg.idt).
Laut msdn sind die Tabellen "MsiAssembly.idt", sowie "MsiAssemblyname.idt" für das Registrieren von Assemblies zuständig. Diese Tabellen wurden demzufolge im Setup mit den neuen Assembly-dlls integriert.
Bei der Ausführung (Installation) des Produtes läuft dann auch alles glatt, da man anschließend mit "regasm /unregister <dllname>" die Assemblies erfolgreich deregistrieren kann. Aus diesem Grund gehe ich davon aus, dass während der Installation alles glatt läuft.
Wenn das Programm dann aber gestartet wird und auf Funktionalität zugegriffen werden soll, die in einer der Assemblies verpackt ist, gibt es einen Runtime Error. Wenn man die Assemblies allerdings alle mit regasm in einem Batch-Job registriert funktioniert alles einwandfrei. Hieraus ergeben sich für mich folgende Fragen:Wodrin besteht der Unterschied zwischen einer Registrierung mit regasm oder der Tabelle msiassembly in einem msi Paket?
Die neuen Assemblies haben KEINEN Strong name. Deswegen können sie auch nicht im Global Assembly Cache registriert werden, was auch nicht gewollt ist. Ist dies aber ggf. Voraussetzung dafür, um die msiassembly Tabelle nutzen zu können?
Wie ist die korrekte Vorgehensweise, um eine Assembly zu registrieren? Wenn die msiassembly Tabelle nicht geeignet ist, fällt mir nur noch eine Custom Action ein, die z.B einen Batch Job startet in dem per regasm die Files registriert werden.
Wenn es ganz andere Ansätze gibt... ich bin neugierig und freue mich über jeden Hinweis, bzw. jede Frage um ein wenig Licht in die Sache zu bekommen.
Viele Grüße!!
-
Ich hab irgendwie zu wenig Ahnung von der Materie , ich kann mit msiassembly nix anfangen.
Registrieren kannst Du eine Assembly AFAIK aber nur im GAC. Und dafür muss diese einen Strongname haben. Ansonsten wird die Assembly einfach in einen Pfad kopiert, den die Anwendung durchsucht.
Warum willst Du die Assemblies registrieren ?