AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dll in die Exe integrierbar ohne sie entpacken zu müssen?

Dll in die Exe integrierbar ohne sie entpacken zu müssen?

Ein Thema von Matze · begonnen am 22. Apr 2008 · letzter Beitrag vom 22. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Dll in die Exe integrierbar ohne sie entpacken zu müssen?

  Alt 22. Apr 2008, 12:46
Hallo,

ich benutze in einem Programm eine Dll, die im Programmverzeichnis liegt. Meinem Kunde wäre es jedoch lieber, wenn er nur eine Exe weitergeben müsse. Ich schlug im daraufhin die Option vor, die Dll in die Exe zu integrieren (als Ressource) und diese beim Programmstart zu entpacken. Doch dies ist nicht möglich, da die Anwender dort keine Schreibrechte haben, was eigentlich löblich ist.

In der DP wurde bisher immer die Option angesprochen, die Dll zu entpacken, daher vermute ich, geht es nicht anders und muss bei den 2 Dateien bleiben.
Da ich mir aber nicht sicher bin, frage ich dennoch:
Gibt es eine Möglichkeit, die Dll in die Exe zu integrieren ohne sie entpacken zu müssen bzw. kennt ihr ein anderes Vorgehen, bei dem man nur eine einzelne Datei weitergeben muss (in ein Archiv packen meine ich jedoch nicht)?

Ein "Nein, gibt es nicht" reicht mir voll und ganz.

Grüße
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 12:56
Hallo Matze,

da Du bei einer eigenen DLL den Code dieser auch direkt in die Anwendung packen könntest, gehe ich davon aus, dass es sich um eine Fremd-Dll handelt.

Stellt sich da nicht die Frage, ob man das - seitens des Autors der Fremd-Dll - überhaupt darf?
Klar, du veränderst die Dll nicht, aber du 'versteckst' sie.

Jetzt kommen vielleicht wieder einige mit dem Einwand 'Was soll daran verboten sein?!' - ich weiß es nicht. Deshalb frage ich. Aber ich habe mittlerweile gemerkt, dass Recht und Gesetz nicht so einfach ist, wie man sich das manchmal vorstellt im Leben.

Bevor ich etwas mache, bei dem ich nicht hundertprozentig sicher bin, dass man das darf, lasse ich es lieber.

*********

Nimms mir net übel, wenn ich etwas Off-Topic werde - aber mich interessiert es selber auch, und ich dachte, da wäre das ein guter Aufhänger
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:07
Hallo s-off,

das nehme ich dir doch nicht übel und der Hinweis ist gut.

Übrigens hast du recht, es handelt sich um eine Fremd-Dll (FreeImage) und in der Lizenz sehe ich nichts dergleichen:

Zitat:
you are REQUIRED to
- distribute the license (GNU GPL or FIPL) you choosed with your application (i.e. the TXT file)
- provide a suitable acknowledgement, either in the program's "About" box or in the user's manual (or both)
Näheres könnte man sicher auch mit den Entwicklern abklären, sofern überhaupt eine Möglichkeit dieser Art besteht.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:19
Zitat von Matze:
Ich schlug im daraufhin die Option vor, die Dll in die Exe zu integrieren (als Ressource) und diese beim Programmstart zu entpacken. Doch dies ist nicht möglich, da die Anwender dort keine Schreibrechte haben, was eigentlich löblich ist.
Im Temp-Verzeichnis haben sie auch keine Schreibrechte?

Die Dll könnte schon direkt aus der Exe gestartet werden. Code ist beim Googeln zu finden.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:31
Es gibt hier im Forum doch auch eine "TBassPlayer" Komponente, die ohne die Bass.dll auskommt - schau dir doch einfach mal den Sourcecode davon an.

Du musst den ausführbaren Code vermutlich mittels MSDN-Library durchsuchenVirtualAlloc irgendwie laden.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:32
Zitat von toms:
Im Temp-Verzeichnis haben sie auch keine Schreibrechte?
Dort vermutlich schon, nur musste ich den Dll-Pfad nicht angeben, sondern das macht diese Library. Daher weiß ich nicht, ob das funktionieren würde.

Zitat von toms:
Die Dll könnte schon direkt aus der Exe gestartet werden. Code ist beim Googeln zu finden.
Ich habe zwar gesucht, werde aber nochmals schauen, ob ich was dazu finde. Auch die möglichen Nachteile dieses Vorgehens wären gut zu wissen. Aber vielleicht finde ich etwas.
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#7

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:40
Schau mal hier.
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#8

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:42
Zitat von Matze:
... Doch dies ist nicht möglich, da die Anwender dort keine Schreibrechte haben, was eigentlich löblich ist.
Hallo,

ein paranoider Administrator kann den Rechner so einrichten, dass nur ein Admin Programmdateien installieren kann - und als Admin kann man garnicht paranoid genug sein. Die DLL im Temp-Verzeichnis oder in einem Userverzeichnis zu entpacken ist alles andere als Windows-konform und könnte auch noch unterbunden werden, wenn man den Dateien dort das Attribut "ausführbar" nicht gibt.

Wird das so gemacht (und damit muss man rechnen, in Zukunft sicher noch mehr), dann gibt es das Konzept "Exe weitergeben und einfach kopieren und ausführen" überhaupt nicht mehr, sondern grundsätzlich ist der Installationsvorgang getrennt von der Ausführung und muss von einem Admin vorgenommen werden. Auch wenn du keine DLL hättest, die Exe könnte der User ja auch nicht selbst in "Programme" kopieren. Bei einem Firmen-PC halte auch ich es für wünschenwert, dass der normale User keine Möglichkeit hat, sich irgendwelche Utilties dazuzuinstallieren ("Ich will meinen Norton Commander wie zuhause...").

Dann kann man aber auch gleich eine Installations-Exe schicken.

Zur Lizenz: i.A. musst du erwähnen, dass du Fremdsoftware benutzt, z.B. in der About-Funktion, egal ob diese Software mitgelinkt wurde oder in einer DLL steht. Viele Entwickler bieten ja beide Möglichkeiten: an meistens bekommt man eine Library und kann daraus auch eine DLL kompilieren.

Gruss Reinhard
  Mit Zitat antworten Zitat
Carlo91

Registriert seit: 3. Jun 2006
Ort: Bremen
107 Beiträge
 
Delphi 2006 Architect
 
#9

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:47
Hi,
ja es geht man muss die DLL in den speicher laden und dann DLLMain callen.
Ein Möglichkeit ist die uallCollection zu downloaden und dann die function LoadLibraryParamDllMainAX aus uallKernel.pas so abzuändern das sie die DLL nicht aus einer datei läd sondern aus z.B. einen TMemoryStream. Um dann exports aus der DLL zu benutzen muss man GetProcAddressX aus der uallKernel.pas nehmen.

P.S. ich hoffe das ich nichts vergessen hab ist schon lange her das ich das gemacht hab...

MfG Carlo
Thorben
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Dll in die Exe integrierbar ohne sie entpacken zu müssen

  Alt 22. Apr 2008, 13:53
Zitat von Reinhard Kern:
ein paranoider Administrator kann den Rechner so einrichten, dass nur ein Admin Programmdateien installieren kann
So ein Administrator ist nicht paranoid, sondern nur vernünftig und macht seinen Job.

Zitat:
Die DLL im Temp-Verzeichnis oder in einem Userverzeichnis zu entpacken ist alles andere als Windows-konform
Genau das ist Windows konform.

Zitat:
und könnte auch noch unterbunden werden, wenn man den Dateien dort das Attribut "ausführbar" nicht gibt.
Seit wann gibt es das Dateiattribut "ausführen" unter Windows?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:43 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