Herzlich Willkommen zu einem spannenden Thema
Warnung: Ich kenne mich nicht wirklich aus. Ich will noch nicht einmal alles verstehen, ich möchte nur etwas
hinbekommen.
Eine Delphi-Anwendung verwendet eine
ActiveX-Komponente. Bisher musste man hingehen und auf jedem PC mit Adminrechten einmal mit
regsvr32 someLib.dll
diese
DLL "registrieren". Und die musste auch an diesem Pfad bleiben!
Ich möchte nun diese tolle "Side-by-side" registration nutzen: Ich kann mir diesen ganzen Registrierungsvorgang komplett sparen wenn ich
- Der DLL someLib.dll
in ihrem Manifest eine assemblyIdentity
(sowie ein paar weitere Infos) gebe
- Der Anwendung in ihrem Manifest eine assemblyIdentity
gebe
- Der Anwendung myApp.exe
ins Manifest gebe dass sie die DLL someLib.dll
(genau spezifiziert mit Versionsnummer und allem) verwendet
Fortan brauche ich keine Registrierung mehr. Tolle Sache, das funktioniert wirklich
Mich stören die Beschränkungen dass die
DLL im gleichen Verzeichnis wie die .exe-Datei liegen muss. Es gibt ein paar weitere Regeln wo sie auch liegen darf, aber ich mag die alle nicht:
Zitat:
The first time side-by-side searches for a private assembly, it determines whether a language-specific subfolder exists in the application's directory structure. If no language-specific subfolder exists, side-by-side searches for the private assembly in the following locations using the following sequence.
Side-by-side searches the WinSxS folder.
\\<appdir>\<assemblyname>.DLL
\\<appdir>\<assemblyname>.manifest
\\<appdir>\<assemblyname>\<assemblyname>.DLL
\\<appdir>\<assemblyname>\<assemblyname>.manifest
Quelle:
MSDN:
About Isolated Applications and Side-by-side Assemblies >
Assembly Searching Sequence
Meine Frage: Gibt es eine Möglichkeit dass ich z.B. die .exe unter
.\myApp.exe
haben kann und die
DLL unter
.\fancyLibraries\someDll.dll
oder ist das nicht möglich?