Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism [Link Unit] Geht nicht (https://www.delphipraxis.net/72306-%5Blink-unit%5D-geht-nicht.html)

Jomo77 28. Jun 2006 12:01

Datenbank: mySQL • Version: 4x • Zugriff über: mySQLDirect .net

[Link Unit] Geht nicht
 
Hallo Zusammen,

ich bin schon etwas länger dabei von Delphi 2005 VCL .Net auf eine externe mySQL zuzugreifen. Ich habe vieles probiert aber nur hiermit hatte ich Erfolg:

"MySQLDirect .NET Data Provider" (http://www.crlab.com/mysqlnet/)

Das funktioniert bei mir lokal wunderbar, dort ist MySQLDirect auch installiert. Wenn ich allerdings die EXE auf einem anderem Rechner ausführe, bricht er immer ab mit der Meldung ".. c:\programme\mysqldrivercs\dll\MySQLDriverCS.dll nicht gefunden..".

Auch kein Wunder - dort ist die DLL auch nicht installiert. Jetzt hatt ich die Idee mit "Link Units" diese DLL einzubinden, leider ist das nicht möglich, weil grau hinterlegt und nur FALSE einstellbar ist ;(

Ich weiß auch nicht ob ich die DLLs einfach so ausliefern darf, dann müßte ich ziemlich viele Lizenzsen kaufen...

Hat jemand eine Idee, wie ich die EXE auf anderen Rechnern zum Laufen bekomme?

Vielen Dank im Voraus

Dave

Bernhard Geyer 28. Jun 2006 12:31

Re: [Link Unit] Geht nicht
 
Verteil sie einfach mit.
Unter .NET kann man nicht so einfach wie in der Delphi-VCL den Code mit in die Exe kompilieren sondern muss die DLL's seperatat mit ausliefern. Am einfachsten ist es diese DLL im gleichen Verzeichnis zu halten wie die Anwendung.

Normalerweise dürfte es auch ein Dokument der Art Redistribute geben welcher alles genau erklärt.

Alexander 28. Jun 2006 13:39

Re: [Link Unit] Geht nicht
 
Ist es denn erlaubt, diese DLLs einfach so mit dem eigenen Projekt auszuliefern? Ich hatte da auch schon mal etwas in diese Richtung gefragt, aber keine Antwort erhalten :sad:.
Bei mir wäre es halt der Provider direkt von MySQL.org.

Was passiert, wenn im GAC eine neuere Version der DLL registriert ist? Wird dann automatisch diese genommen, obwohl im Anwendungsverzeichnis auch die entsprechende DLL liegt?

Bernhard Geyer 28. Jun 2006 13:43

Re: [Link Unit] Geht nicht
 
Zitat:

Zitat von Alexander
Ist es denn erlaubt, diese DLLs einfach so mit dem eigenen Projekt auszuliefern? Ich hatte da auch schon mal etwas in diese Richtung gefragt, aber keine Antwort erhalten :sad:.
Bei mir wäre es halt der Provider direkt von MySQL.org.

Ach die DLL ist von MySQL direkt. Ich dachte die wäre von CoreLabs. Da ist es natürlich u.U. problematisch bezüglich Lizenzierung. Gibt es denn von CoreLabs nicht ähnlich wie bei den VCL-Komponenten einen Direkt-Modus ohne MySQL-DLL's?

Zitat:

Zitat von Alexander
Was passiert, wenn im GAC eine neuere Version der DLL registriert ist? Wird dann automatisch diese genommen, obwohl im Anwendungsverzeichnis auch die entsprechende DLL liegt?

In .NET kann man ca. 100 Verschiedene Einstellungen machen wo alle bezüglich Suchreihenfolge möglich ist. Ohne Konfiguration gewinnt die DLL im Anwendungsverzeichnis deshalb weil Du auch gegen diese Compiliert/Gelinkt hast.

Elvis 28. Jun 2006 13:50

Re: [Link Unit] Geht nicht
 
Zitat:

Zitat von Bernhard Geyer
In .NET kann man ca. 100 Verschiedene Einstellungen machen wo alle bezüglich Suchreihenfolge möglich ist. Ohne Konfiguration gewinnt die DLL im Anwendungsverzeichnis deshalb weil Du auch gegen diese Compiliert/Gelinkt hast.

Nein, der GAC hat normal die höhere Priorität. Du kannst beim Kompilieren angeben, ob die gegen eine spez. Evidence einer Assembly linken willst. Dann wird er nur exakt die Version akzeptieren, egal ob sie im GAC liegt oder im App Dir. Hast du das du die Version nicht in der Referenz hinterlegt, wird er die neueste nehmen, die er kriegen kann. Hast du die Version hinteregt schaut er zuerst im App dir, auch wenn der GAC eine höhere Version hat.
Die Regeln waren aber in .Net 1.X noch etwas straffer und unflexibler.

Alexander 28. Jun 2006 18:22

Re: [Link Unit] Geht nicht
 
@Bernhard: Mit CoreLab kenne ich mich nicht aus, ich habe nur mal direkt nach dem MySQL-Provider gefragt.

@Robert Danke :). Da ich ja .NET 1.1 nutze (Delphi 2005 eben), wäre es wichtig zu wissen, ob dies auch für .NET 1.1 zu trifft. Du schreibst ja, dass es unter .NET 1.x unflexibler etc. sein soll. Oder trifft das von dir genannte Grundprinzip (immer die aktuellste Version, wenn nicht explizit was anderes angegeben) auch dort zu?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 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