Seite 1 von 1

Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 9:41
von asim
Hallo zusammen,
weiß jemand vielleicht man wie kann eine alleinstehende EXE erstellen kann? Ich meine eine EXE bei der möglichst keine DLL mehr verwendet wird oder allenfalls die unvermeidlichen DLLs. Diese EXE wird benötigt um an den Kunden ausgeliefert zu werden, die soll dort ohne weitere DLLs gestartet werden können.

Eine sorgfältige Antwort oder ein Beispiel würde mir hier weiterhelfen.

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 9:47
von Tom
Das geht nicht. Xbase++-Anwendungen benötigen immer die Runtime-DLLs, ganz egal, welchen Funktionsumfang die Anwendungen haben. Man kann die in den Xbase-DLLs enthaltenen Funktionen nicht direkt einbinden. Dazu gibt es auch einen 17 Jahre alten PDR. Du kannst den ja boosten, vielleicht hilft das: :wink:
http://www.alaska-software.com/scripts/ ... PDRID=4902

Es gibt aber die Möglichkeit, eine Anwendung mit den benötigten Runtime-DLLs in eine EXE zu verpacken, die sich beim Programmstart selbst entpackt und nur im Speicher entpackt bleibt. Das ist hier im Forum schon mehrfach diskutiert worden. Es verlangsamt den Programmstart etwas, aber ansonsten läuft das wohl.

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 10:58
von asim
Hallo Tom,
dankeschön für die schnelle Antwort. Diese Link aber sagt nicht wie ich eine Anwendung mit den benötigen Runtime-DLLs in eine EXE verpacken kann?
Sorry für die dumme Frage, ich bin neu in der Xbase Welt.

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 11:20
von brandelh
Das hat jetzt mit Xbase selbst nicht wirklich was zu tun, viele Anwendungen haben eine EXE und mehrere DLL.
Wenn man daraus eine EXE basteln möchte, die im RAM die DLL entpackt, braucht man Tools die das können, eine Google Suche hat z.B. diese Seite gefunden

:arrow: https://adontec.com/index.htm?GO=/runtimepacker_d.htm

Das ist ausdrücklich keine Empfehlung :!: Ich nutze sowas nicht.

Sauberer wäre es natürlich, den kompletten Quellcode zu haben und daraus eine EXE generieren zu können, das geht aber aktuell mit Xbase++ nicht.
Der PDR Link von Tom könnte ein Zwischending vom Alaska Linker sein (ich kann mich nicht mehr erinnern ob da was geplant war), aber ein PDR bedeutet immer, dass es aktuell nicht geht.

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 11:49
von Tom
Nee, der Link führt zu einem sogenannten PDR, einem - wie ich vermute - "Problem Documentation Report" oder so, jedenfalls zu einer Fehler-/Wunschmeldung an Alaska, die die dann in ihre Knowledgebase/PDR-Datenbank packen. Da sieht man, dass dieser Wunsch vor 17 Jahren (übrigens von mir) gemeldet wurde, aber da steht nur, dass das Problem bekannt und weiterhin offen ist - und vermutlich auch weitere 17 Jahre offen bleiben wird, denn Xbase++ ist qua Architektur ungeeignet für Standalone-EXEs. Die Möglichkeit, eine einzelne EXE auszuliefern, die sich dann im Speicher sozusagen entfaltet, bietet Alaska Software nicht selbst, das muss man mit Fremdtools machen, etwa mit dem, das Hubert verlinkt hat. Aber ob das zu empfehlen ist und gut funktioniert - keine Ahnung.

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 12:28
von ramses
Hallo

ich habe mal einige solche Packer gekauft und damit Experimentiert aber nichts richtig und problemlos oder ohne massive performanceeinbussen zum laufen bekommen. Daher mein Rat: Vergiss es und nutze die Zeit sinnvoller .....

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 13:06
von brandelh
Je nach Aufgabe macht es Sinn, einen anderen Compiler zu verwenden.
Ich z.B. nutze solche kleinen EXE mit PowerBasic für einfache Umwandlungen (DOS-FILTER, Dateiumsetzungen etc.).
Andere nehmen Delphi oder C/C++ ...

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 13:21
von BJelinek
Oder auch Harbour.

Ist Xbase Sprache.

Re: Alleinstehende (standalone) EXE

Verfasst: Mo, 11. Nov 2019 16:18
von Herbert
oder Windev 8)
Hier kann eine einzige EXE mit dem internen Exe-Generator erstellt werden, welche bei Programmstart die benötigten Dll extrahiert, also zu dem führt, was die erwähnten Hilfstools machen.