Hallo,
angenommen man ist auf eine fremde .dll angewiesen - wie liefert man diese dem User mit?
Es handelt sich beim Programm um eine einzige .exe (portable) und ein typischer Installer ist nicht vorhanden/nötig.
Die DLL includen und immer temporär während Nutzung des Programm "neben" die .exe zu legen (und danach wieder zu löschen), ist ja auch nicht die saubere Art.
Dem User einfach "heimlich" in den System-Ordner installieren auch nicht.
Welche Möglichkeit gibt's noch? Ins "Home"-Verzeichnis vielleicht? Wo sucht das Programm automatisch nach der DLL?
Thaaaaaaaaaaaaaaaaaaaaanx!
Fremde .dll mitliefern - wie?
Fremde .dll mitliefern - wie?
PB 6.02 LTS + Win 11
Re: Fremde .dll mitliefern - wie?
Ich weiss nicht ob das auch mit x64 funktioniert:
Open DLL from memory: Link: https://www.purebasic.fr/english/viewtopic.php?t=42118
Open DLL from memory: Link: https://www.purebasic.fr/english/viewtopic.php?t=42118
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
- TroaX
- Beiträge: 660
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: Fremde .dll mitliefern - wie?
Code: Alles auswählen
Ergebnis$ = GetCurrentDirectory()
Also wenn es dir nur darum geht, das dein Programm die DLL sicher findet, dann sollte das generell kein größeres Problem sein. Heimlich solltest du halt nichts machen. Das ist weder eine seriöse noch eine saubere Methode. Lege sie zusammen mit der .exe in ein Archiv und gut ist. Denn wenn der Nutzer das Programm löscht, bleibt die DLL trotzdem in seinem Versteck. Das muss nun wirklich nicht sein. Ansonsten wie mksoft durch seinen Link schauen, ob die DLL in den RAM und aus diesem geladen werden kann.Alle Datei-Zugriffe erfolgen relativ zu diesem Verzeichnis, wenn kein absoluter Pfad angegeben wird. Zum Ändern des aktuellen Verzeichnisses verwenden Sie SetCurrentDirectory().
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Re: Fremde .dll mitliefern - wie?
Geht es hier wirklich um eine "fremde" DLL? Die darf doch gar nicht einfach so weiter verbreitet werden schon gar nicht "versteckt", außer die Lizenz lässt es zu. Ich weiß noch, wie Audacity immer den Benutzer aufgefordert hat sich die lame_enc.dll (oder wie sie hieß) selbst "zu besorgen", wenn man n MP3 erstellen möchte.
Ansonsten, wenn du wirklich nur eine Single-Exe verteilen willst, würde ich die DLL aus der Exe ins Temp-Verzeichnis kopieren lassen, aber auch nur, wenn die DLL nicht gefunden wird. Denn viele DLLs sind ja schon auf dem System vorhanden und werden alleine gefunden.
Ansonsten, wenn du wirklich nur eine Single-Exe verteilen willst, würde ich die DLL aus der Exe ins Temp-Verzeichnis kopieren lassen, aber auch nur, wenn die DLL nicht gefunden wird. Denn viele DLLs sind ja schon auf dem System vorhanden und werden alleine gefunden.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Fremde .dll mitliefern - wie?
"Fremde DLL" schon die Umschreibung scheint ja hier "nicht ganz saubere" Wege gehen zu wollen.
Es ist entsprechend der Lizense der DLL zu verfahren.
Es ist entsprechend der Lizense der DLL zu verfahren.
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...