DLLs benutzen ohne sie mitzuschleppen?

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

blackgecko

Betreff: DLLs benutzen ohne sie mitzuschleppen?

BeitragSa, Feb 06, 2010 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Tschuldigung, wenn die Frage schon gestellt wurde, aber ich hab nichts gefunden.
Ich hab mal die acceptfiles.dll (Drag&Drop) ausprobiert und will sie in einem Projekt verwenden. Das mit dem Userlib Ordner und der decls-Datei hab ich noch hingekriegt, konnte das Programm sowohl starten als auch compilieren.
Nun ist es ja so, dass dann die DLL immer in dem Ordner sein muss, in dem die Exe ist. Kann man das irgendwie umgehen? Es sieht halt doof aus, wenn man das Programm weitergibt und immer die DLL mitschleppen muss, weil sonst ne Fehlermeldung kommt.
Geht das vielleicht mit dem Resource Hacker?
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

Nicdel

BeitragSa, Feb 06, 2010 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Die einzige Lösung, die mir bekannt ist, ist, dass du die DLL in einem Unterverzeichnis hast und beim ersten Start nach C:\WINDOWS\system32 (bei WinXP, ist unterschiedlich, GetEnv hilft da) kopierst. Das ist für die meisten allerdings nicht so erfreulich.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

jokerman29

BeitragSa, Feb 06, 2010 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
du musst dich nciht entschuldigen wenn du fragen hast Wink
leg doch einen zweiten ordner an z.b. gfx und pakc da die lib rein (musst dann den pfad ändern im code) und dann kann man sie (glaub ich) verstecken, also so das man sie nicht sieht. mit rechtsklick auf die lib und dann eigenschaften ---> und unten sollte dann die option "verstecken" sein. dieses verstecken ist nur fürs auge, aber nicht fürs programm heißt der benutzer sieht nihtmehr die lib, das programm aber schon. ich bin mir jetzt nicht 100% sicher obs mit der lib funktz aber bei meinem vokabelkasten hab ich die textdateien auch versteckt und das programm konnte sie lesen... also sollte das auch klapen Wink
mfg
jokerman29
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Nicdel

BeitragSa, Feb 06, 2010 20:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das geht nicht. DLLs müssen immer im Hauptverzeichnis liegen (Ausnahme: CallDLL, nicht empfehlenswert).
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

skey-z

BeitragSa, Feb 06, 2010 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ist so schlimm, dass eine DLL im Root liegt, schau dir mal verschiedene z.T. auch Professionelle Spiele und Programme an, die haben zumeist mehrere DLL's im Root.

Wen so was stört, kann sich ja eine Verküpfung von der Exe auf dem Desktop anlegen und von dort aus starten.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

blackgecko

BeitragSa, Feb 06, 2010 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal für die Mühe!

Ich hab eben mal versucht, eine Datei mit CopyFile nach C:\Windows\System32 zu kopieren: Es geht nicht. Zumindest unter Windows 7 nicht, unter XP könnt ich mirs vorstellen.
Das Programm ist eben im Moment eine einzige Exe-Datei, ohne irgendwelche Anhängsel. Die zwei kleinen Grafiken, die gebraucht werden, werden im Code erstellt und woanders gespeichert.
Wenn es geht, würde ich es gern bei der einen Exe belassen, das ist einfach praktischer.
Naja, ich probier mal ein bisschen rum, falls ich eine Möglichkeit finde, sag ich Bescheid.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

chi

BeitragSa, Feb 06, 2010 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
da gibt es jetzt mehrere möglichkeiten...

die beste wäre, du besorgst dir molebox. mit mb kannst du alle files in eine einzige exe packen und hast darüber hinaus auch noch die möglichkeit deinen code + dateien vor missbrauch zu schützen. die neue version von mb bietet dazu auch noch die option deine exe so umzuschreiben, daß sie als reine, nicht gewrappte exe compiliert wird und deshalb eher weniger als virus von av-software erkannt wird. molebox kostet aber $299,-

dann gibts da noch den blitz media-linker mit dem du alle files eines projekts in deine exe packen kannst. nur .dll´s funktionieren leider nicht (müssen im verzeichnis der exe sein). bml ist gratis Wink

als dritte option wäre da noch 7-zip. alle files die du für dein projekt benötigst einfach als .7z packen und mit dem zusätzlich verfügbaren packet 7zip???_extra als SFX-exe speichern. dabei werden deine files allerdings vor dem ausführen immer in den temp-ordner entpackt und von dort gestartet. wenn du aber images, models,... vorher mit dem media-linker vorbereitet hast, gibt es auch nur die exe und deine dll´s Wink

cheers, chi

blackgecko

BeitragSo, Feb 07, 2010 0:50
Antworten mit Zitat
Benutzer-Profile anzeigen
299$ hab ich grad nicht da Sad

Mit dem BlitzMedia Linker gehts nicht.

Wenn ich mit 7zip eine selbstentpackende Exe erstelle (so wars doch gemeint?), dann wird beim Ausführen gefragt, wohin extrahiert werden soll und das ist auch nicht schön. Außerdem muss der Benutzer dann nochmal die entpackte Exe ausführen.

Ich hab zwischendurch ein bisschen mit dem Resource Hacker rumgespielt, mit dem kann man ja schließlich auch Manifest-Dateien einfügen, aber ich hab bislang noch keine Lösung für dlls.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

ChristianK

BeitragSo, Feb 07, 2010 1:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst die DLL auch in einem anderen Unterordner ablegen. Dann musst du sie zwar trotzdem mit weitergeben, aber eben in einem eigenen Ordner.
Ändere dazu einfach in der .decls Datei die erste Zeile zu: .lib "bin/acceptfiles.dll"
Dann kannst du die DLL im Ordner "bin" neben der EXE speichern.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

Silver_Knee

BeitragSo, Feb 07, 2010 5:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hänge die dll gefolgt von ihrer <INT> Dateigröße an das Ende deiner Exe an. Nun kannst du beim starten die dll relativ einfach von der Position Ende-4-Letztes_Int bis Ende-4 auslesen und extrahieren
Wenn blitz vor dem entpacken die existenz der dll hinterfragt bracuhst du eine Exe an die du deine jetzige exe und die dll anhängst Mit EXE, <INT> EXE-Länge, DLL<INT> DLL-Länge und anschließendem execfiledürfte das funktionieren.
 

chi

BeitragSo, Feb 07, 2010 9:52
Antworten mit Zitat
Benutzer-Profile anzeigen
doch doch, mit 7zip geht das! Wink hab ich schon zig mal gemacht...
siehe hier -> http://it.megocollector.com/?p=16

falls du nicht klar kommst sag bescheid...

Hubsi

BeitragSo, Feb 07, 2010 12:26
Antworten mit Zitat
Benutzer-Profile anzeigen
jokerman29 hat Folgendes geschrieben:
...dieses verstecken ist nur fürs auge, aber nicht fürs programm heißt der benutzer sieht nihtmehr die lib, das programm aber schon...


Das ist ein Irrglaube:

https://www.blitzforum.de/upload/file.php?id=7939

Nicht das Du Dich mal 100% darauf verlässt.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

jokerman29

BeitragSo, Feb 07, 2010 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
wie meinst du das jetz?? Very Happy
meinst du das man es wieder sichbar machen kann oder das das programm es nichtmehr sehen kann??

edit
ah jetzt versteh ich was du meinst... woher soll denn z.b. mein lehrer wissen, dass es bei dem Vokabelkasten die Textdateien gibt?? also ich glaub nciht das er danach suchen wird aber trotzdem danke für den hinweis!

mfg
jokerman29
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Hubsi

BeitragSo, Feb 07, 2010 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Er muss nicht danach suchen, die Dateien werden bei entsprechender Ordnereinstellung so oder so angezeigt.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Chrise

BeitragSo, Feb 07, 2010 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
du könntest ja die dll-zeilen in eine bb-datei einspeichern und immer wenn du die exe ausführst eine dll-datei in das temporäre verzeichnis schreiben. Ist aber vielleicht je nach größe der dll datei etwas umständlich.

Ich glaube ein programm wie molebox, da gibts bestimmt auch einige freeware programme, wäre die beste lösung Wink
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.
 

chi

BeitragMo, Feb 08, 2010 4:32
Antworten mit Zitat
Benutzer-Profile anzeigen
man benötigt:

.) 7zip (z.b. 7z910.exe) ... http://sourceforge.net/projects/sevenzip/files/
.) 7z910_extra.7z ... (inhalt ins 7zip-verzeichnis kopieren)
.) ResHacker ... http://angusj.com/resourcehacker/
.) ev. Blitz Media-Linker (um vorher textures, models, usw. zur exe hinzuzufügen (am besten ohne kompression))

TUTORIAL:

1) packe deine .exe + .dll + ??? zu einer .7z -> z.b. test.7z (kompressionsstärke ultra würde ich empfehlen)

2) kopiere die erstellte test.7z direkt ins 7zip verzeichnis

3) erstelle eine config.txt datei und schreib folgendes rein: (nehmen wir an deine .exe heißt auch test.exe)

Code: [AUSKLAPPEN]

;!@Install@!UTF-8!
RunProgram="test.exe"
;!@InstallEnd@!


4) erstelle ein make.bat datei:

Code: [AUSKLAPPEN]

copy /b 7zS.sfx + config.txt + test.7z test.exe


5) starte make.bat und du erhältst deine fertige test.exe (allerdings mit einem unnötigen popup)

-> optional popup entfernen:

6) starte ResHacker, öffne deine .exe und gehe zu Dialog / 500 / 1033. dort ersetzt du das vorhandene script mit:

Code: [AUSKLAPPEN]

500 DIALOG 0, 0, 0, 0
STYLE WS_POPUP
CAPTION "Progress"
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
FONT 8, "MS Shell Dlg"
{
}


... und klickst auf "Compile Script".

weiters würde ich empfehlen, icons und version info nach lust und laune anzupassen....

anschließend die .exe speichern und FERTIG!!!

(um nicht jedesmal punkt 6 zu wiederholen, kannst du anstatt deiner .exe auch die datei 7zS.sfx mit ResHacker öffnen und dort das script usw. verändern. somit wäre bei punkt 5 schon alles vorbei Wink)

EDIT: natürlich gibts für das ganze auch ne GUI... http://sourceforge.net/projects/sfx-maker/

yo, dann viel spaß dabei... lg, chi

skey-z

BeitragMo, Feb 08, 2010 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das wäre mir für so ein kleines Ergebnis echt zu viel Aufwand.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter
 

chi

BeitragMo, Feb 08, 2010 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
lol, wo is das viel aufwand???

wenn man´s einmal vorbereitet hat, dann dauerts max. 10 sekunden die .7z in den ordner zu kopieren, eventuell den namen der exe in der config.txt umzuschreiben und die make.bat zu starten...

aber wenn du eine bessere methode hast die auch kostenlos ist, dann bin ich ganz ohr Wink

blackgecko

BeitragMo, Feb 08, 2010 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke chi, es funktioniert Very Happy
Auch wenn ich keine Ahnung hab, was da jetzt genau gemacht wird. Question
Aber wenigstens kann ich das jetzt in mein Projekt einbauen. Danke nochmal!
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
 

chi

BeitragMi, Feb 10, 2010 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hauptsache es funktioniert Very Happy

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group