Bei einem COM Interop Projekt versuche ich einen Weg zu finden, wo ich den Pfad der DLL im Manifest angeben kann.
Ausgangslage ist ein VB6 EXE Projekt (Demo.exe), welches eine .NET DLL (eine sogenannte Com Callable Wrapper oder CCW DLL) verwendet. Damit die .NET DLL von VB6 aus verwendet werden kann, wird die COM Interop Technik verwendet. Somit ist diese .NET Assembly COM visible.
Nun lautet die Anforderung, dass diese Com Callable DLL registrierfrei sein muss. Für AcitveX DLL gibt es ja hierzu bereits eine Lösung, indem man ein Application Manifest erstellt. Damit kann dann die Registrierung via regsrv32 umgehen.
Die .NET Assembly (Com Callable Wrapper) kann ebenfalls im Application Manifest deklariert werden (jedoch geschieht dies anders, als bei ActiveX DLLs) Für .NET Assemblies verwendet man einen <dependency> Block:
Ich habe intensiv recherchiert, wie man Pfad Informationen für die .NET Assembly angeben könnte. Das Business schreibt vor, dass sämtliche DLL nicht im Applikationsverzeichnis liegen, sondern in einem Unterverzeichnis z.B. \lib Leider habe ich bis jetzt keine Lösung gefunden, wie man das im <dependency> Block mit angeben könnte.
Gerne wollte ich noch 2 Bilder einfügen, jedoch kann ich dies nur via URL und da kenne ich kein gutes Image Hosting, welches nicht zeitlich abläuft... :-(
Für Hilfestellung danke ich im Voraus. Mit freundlichen Grüssen, Charles
Hallo, das ist zwar nicht die "richtige" Antwort auf deine Frage, kann dir aber vielleicht auch weiterhelfen. Jede EXE kann über einen Registrykey ihren Suchpfad (PATH) erweitern. Dadurch sollte es möglich sein, die DLLs in einem beliebigen Verzeichnis - auch "lib" :-) - abzulegen.
Description An application that is installed for all users of the computer can be registered under the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths registry key. In Windows 7 and later, an application that is installed for only one user can be registered under the HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths registry key.
Hallo Tom Vielen Dank für deine schnelle Antwort. Leider habe ich die Vorgabe vom Business, nichts in die Registry zu schreiben. Denn das Modifizieren der Registry benötigt Administrationsrechte. Bei mehreren Tausend Kunden kann dies ein Problem werden und zu enormen Support-Fällen führen.
Der Ansatz ist aber interessant. Gäbe es eine Möglichkeit, dass die Applikation aufgrund einer anderen Gegebenheit die Abhängikeiten/DLLs in einem Unterverzeichnis suchen würde?
Kürzlich habe ich noch etwas über einen WinSxS Ordner gelesen, der etwas mit Manifesten zu tun hat. Ich werde weiter recherchieren.
Hallo Charles, wenn sonst gar nichts geht, ist vielleicht Thinstall auch eine Lösungsmöglichkeit. Dann wird die gesamte Anwendung in eine einzige EXE verpackt und kann trotzdem (virtuell) Änderungen in der Registry vornehmen.