AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VCL.NET DLL deployen

Ein Thema von Jelly · begonnen am 25. Okt 2007 · letzter Beitrag vom 26. Okt 2007
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

VCL.NET DLL deployen

  Alt 25. Okt 2007, 10:22
Ich habe hier eine in Delphi.NET erstellte DLL liegen, welche, so wie es aussieht, auf der VCL.NET basiert.

Wie kann ich diese DLL denn nun nutzen, ohne auf der Zielmachine das gesamte Turbo Explorer.NET Edition zu installieren.

Es gibt zwar unter diesem Link ein "Runtime Redistributables" Paket. Allerdings existiert die Datei nicht mehr....

Und nun steh ich bischen auf dem Schlauch
  Mit Zitat antworten Zitat
XDev

Registriert seit: 28. Jan 2006
5 Beiträge
 
Delphi 2006 Architect
 
#2

Re: VCL.NET DLL deployen

  Alt 25. Okt 2007, 15:56
Das ist aber auch ein hübsches Thema ...

In irgendeinem Kontext wurde Nick Hodges vor erst kurzer Zeit von irgendwem genau darauf angesprochen und antwortete sinngemäß: "Jaaaaa, da werden wir dann demnächst was tun". (Super: Kaum gibt es Delphi.Net in der 4.Generation, kommt man schon auf die richtigen Ideen...)

Hilft Dir nix, gell ... ???

Es kommt aber noch besser: Mittel- bis langfristig wirst Du nicht nur die Assemblies der Vcl.Net, sondern auch weitere Assemblies von anderen Herstellern benötigen, die Du aber selbst distributieren mußt.

Ganz prinzipiell solltest Du Dich deshalb (möglichst intensiv) mit der Thematik "AssemblyBinding" in der Dokumentation zum .Net-Framework (SDK) befassen.


Es hat mehrere Möglichkeiten:

1. Installiere die gesamte Vcl.Net im GAC

Unter [Programme\CommonFiles\CodeGear Shared\RAD Studio\Shared Assemblies\5.0] hast Du für den Fall von Delphi 2007 .Net (installiert unter Vista) die Redistributables der Vcl.Net liegen. (Gilt analog für D2006/D2005, heisst dann halt irgendwie anders, insbesondere hieß die Firma da noch "Borland").

Versuche irgendwie, das Ganze im GAC des Zielrechners zu installieren.
Vor allen Dingen: Lass mich dann wissen, wie es Dir gelungen ist und wie glücklich Du damit bist. (Ich hatte damit herumexperimentiert und fand es - irgendwie komisch...)


2. Nimm einfach alles und verbringe es in das Arbeitsverzeichnis Deiner Anwendung

Sollte eigentlich klappen müssen. Ich selbst würde so allerdings nicht verfahren und empfehle es Dir auch nicht.


3. Verwendung eine AppConfig-Datei mit "Probing"

Das ist einer der aufwändigeren Wege (den ich persönlich allerdings dennoch für einfacher halte). Finde IRGENDWIE (Delphi, Reflection) heraus, welche Assemblies Du benötigst (oder nimm einfach alle) und separiere sie in einem Unterverzeichnis unterhalb (!!!) des Vz Deiner Executable.

Das hier angewendete Verfahren nennt sich "Probing", sinngemäß erstellst Du eine AppConfig-Datei folgenden Inhaltes:

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="HIER_DIE_VCL_NET_ASSEMBLIES"/>
</assemblyBinding>
</runtime>
</configuration>

Das funktioniert so - definitiv, ich habe es 1 1/2 Jahre lang erfolgreich so gehalten.


3. Verwendung einer AppConfig-Datei mit "CodeBase"

Also, da bin ich jetzt angekommen. Und zwar deshalb, weil nicht nur meine eigene Exe, sondern auch eine fremde Exe meine Assemblies binden soll. Mit "Probing" kann man leider nur Assemblies addressieren, welche sich in einem Unterverzeichnis befinden (und ich schlage jeden tot, der seine Exe in "mein" Directory hineingibt). "CodeBase" ermöglicht die Addressierung von Assemblies in irgendeinem Verzeichnis (Vorsicht aber mit der Zonensicherheit, wenn das dann ein Netzwerk-Laufwerk sein soll!)

"CodeBase" ist EIGENTLICH ziemlich genial, aber der Preis ist schon recht hoch: Die Assemblies müssen signiert sein und man (ich) kommt ziemlich schnell ziemlich durcheinander. Warum, das magst Du an folgendem Schnippel erkennen:

<configuration>
<runtime>
<gcConcurrent enabled="false"/>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Borland.Delphi" publicKeyToken="91d62ebb5b0d1b1b" culture="neutral" />
<codeBase version="11.0.5000.9245" href="file:///[HIER_DAS_ASSEMBLY_DIR]\Borland.Delphi.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Borland.Vcl" publicKeyToken="91d62ebb5b0d1b1b" culture="neutral" />
<codeBase version="11.0.5000.9245" href="file:///[HIER_DAS_ASSEMBLY_DIR]\Borland.Vcl.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<codeBase version="0.85.1.271" href="file:///[HIER_DAS_ASSEMBLY_DIR]\ICSharpCode.SharpZipLib.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ManagedVCL.Data" publicKeyToken="825c3d8d507009dd" culture="neutral" />
<codeBase version="1.0.0.0" href="file:///[HIER_DAS_ASSEMBLY_DIR]\ManagedVCL.Data.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Wie auch immer, ein echt hübsches Thema.
Ich hoffe, ich konnte jetzt wenigstens die Tür zeigen, durch die Du da hindurchgehen mußt ...

Oder Du wartest halt, bis CodeGear dann doch noch eine eigene Lösung präsentiert (die Dir dann aber mit fremden Assemblies immer noch nicht weiterhilft).

Gruß,
Werner
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#3

Re: VCL.NET DLL deployen

  Alt 25. Okt 2007, 15:59
Das Problem ist glaube ich eher, dass er eine .exe ohne die VCL.NET bekommen hat und nun die zur Ausführung nötigen Assemblys irgendwo herbekommen will.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
XDev

Registriert seit: 28. Jan 2006
5 Beiträge
 
Delphi 2006 Architect
 
#4

Re: VCL.NET DLL deployen

  Alt 25. Okt 2007, 16:06
Hmm, das hatte ich eigentlich hiermit mitteilen wollen:

"Unter [Programme\CommonFiles\CodeGear Shared\RAD Studio\Shared Assemblies\5.0] hast Du für den Fall von Delphi 2007 .Net (installiert unter Vista) die Redistributables der Vcl.Net liegen. (Gilt analog für D2006/D2005, heisst dann halt irgendwie anders, insbesondere hieß die Firma da noch "Borland")."
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: VCL.NET DLL deployen

  Alt 25. Okt 2007, 20:35
Danke Werner für die ausführlichen Erläuterungen. Ich werde das Montag mal testen (morgen hab ich frei), und kucken wie ich voran komm. Dass die ganzen Assemblies nochmals unter Common files liegen, wusste ich auch nicht (mehr). Hatte dafür heute meine ersten Erfolge verzeichnet mit einem Tool von CodeProject um Assemblies wieder aus der GAC zu extrahieren. Ich kam aber nicht mehr bis zum Ende mit testen weil ich noch einen anderen Termin hatte.

Sebastian bringt es auf den Punkt. Ich habe hier eine .NET Komponente liegen (TEkRTF wens interessiert), die allerdings in Delphi geschrieben wurde und auf der VCL.NET basiert. Ich will das Dingen aber unter Visual Studio nutzen. Das klappt auch, sofern die ganzen Borland Assemblies zu finden sind. Ich hab mir mal probeweise die Turbo .NET Version installiert, und die Komponente funktioniert einwandfrei. Aber natürlich will ich nicht auf jedem der 400 Rechner in unserem Netz das Delphi installieren... Also such ich nach einer Möglichkeit, die alle benötigten Assemblies mit meiner Anwendung gleicg mitzuverteilen, sofern das natürlich lizenzrechtlich gesehen keine Probleme bereitet. Aber das ist erst mal ein anderes Thema.

Also... Mal schauen wie weit ich Montag komme...
  Mit Zitat antworten Zitat
XDev

Registriert seit: 28. Jan 2006
5 Beiträge
 
Delphi 2006 Architect
 
#6

Re: VCL.NET DLL deployen

  Alt 26. Okt 2007, 06:52
"...sofern das natürlich lizenzrechtlich gesehen keine Probleme bereitet"

Unter [Programme\Code Gear\RAD Studio\5.0] hat es die Datei "Deploy.htm", in welcher beschrieben ist, welche Dateien Du weitergeben darfst.

Gruß,
Werner
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz