AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Wie bekomme ich die exe kleiner?

Wie bekomme ich die exe kleiner?

Ein Thema von NicoleWagner · begonnen am 27. Jan 2020 · letzter Beitrag vom 8. Feb 2020
Antwort Antwort
Seite 1 von 2  1 2   
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
540 Beiträge
 
Delphi 12 Athens
 
#1

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 08:06
Was bringt eine kleinere EXE? Platz sparen auf der Platte - eher uninteressant wenn man 10 MB sparen kann.

Wird das Programm schneller wenn die EXE kleiner ist - kann ich mir nicht vorstellen.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 08:32
Am schmalsten wird es wenn Du auf No-VCL umsteigst.
Je nach Fall, mal mehr mal weniger kompliziert, Luckie kennt sich damit gut aus und hat super Einsteigerfreundliche Tutorials auf seiner Web-Page.
Da kann es schon vorkommen das aus Deiner 15MB Datei eine 50KB Datei wird.

Alternative I:
Downloade Dir einen exe-Packer wie UPX (z.Bsp.) und komprimier das Resultat.

Alternative II:
Komprimier mit 7zip oder RAR5 Deine Datei als SFX-Archiv, so bleibt der Transfer schmal aber beim Endverbraucher pumpt es sich wieder auf volle Größe aus.
Sollte in der heutigen Zeit kein Problem darstellen, Speicher ist billig
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 08:34
Wird das Programm schneller wenn die EXE kleiner ist - kann ich mir nicht vorstellen.
Das Programm an sich nicht, aber der Start des Programms, da weniger geladen werden muss. (Messbar nur mit mechanischen Festplatten, bei SSD ist es Wurst)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 09:06
IMHO nehmen indirekt einkompilierte Binärresourcen einen nicht unerheblichen Teil der EXE ein. Grad wenn man externe Komponenten wie Devexpress verwendet. Ich habe mal einen Resourceneditor genommen und aus einer 30-MB-EXE alles rausgeworfen was nach Bitmap, AVI etc. aussah. Am Ende war sie noch 9 MB groß. Lief zwar nicht mehr gescheit, aber sowhat, Hauptsache die EXE war kleiner
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
263 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 09:23
Um meine Exen kleiner zu bekommen nehme ich mpress.
Reduziert die Größe um mehr als die Hälfte UND : der Große Vorteil gegenüber UPX ist, dass bisher KEIN Virenscanner darauf angeschlagen hat
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.810 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 09:41
Exe Packer haben Nachteile, die nicht von der Hand zu weisen sind: Falsch positive durch Virenscanner mal außen vor, sorgen sie für eine ungünstige Arbeitsspeichernutzung. Und Arbeitsspeicher gibt es deutlich weniger als Plattenplatz. In diesem Thread wurde das bis zur totalen...äh... Abwendung vom Thema...mmmh, diskutiert: https://www.delphipraxis.net/192574-...oder-nein.html

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 14:20
Am meisten mach das aus:

{$SetPEFlags IMAGE_FILE_RELOCS_STRIPPED}

Das muss im DPR platziert werden, am besten nach den uses und vor dem {$R *.res}.

Dein 15 MB bringst du aber wohl kaum unter 10-12 MB egal was du machst. Seit RTTI aktiviert ist, ist leider die Grösse der Exe's explodiert. Also als Alternative könntest du dein Projekt auf z.B. D7 "downgraden" und dann wäre es vermutlich nur noch um die 7-8 MB gross.

Was willst du aber damit erreichen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.336 Beiträge
 
Delphi 12 Athens
 
#8

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 15:07
IMAGE_FILE_RELOCS_STRIPPED:

Und damit blockierst du gleich ein Sicherheitsfeature des Betriebssystems.
Dort werden (wenn aktiv) die DLLs/EXEn im RAM willkürlich verschoben, damit mit böse Häcker in ihren Viren/Trojanern/... nicht einfach mit statischen Adressen in fremdem RAM Programmcode umschreiben können, weil das Gewünschte dann ja jedes Mal wo anders liegt. (beliebt z.B. in Buffer Overflow Exploits)

Und für DLLs ist es auch noch fatal, wenn an dieser Adresse eine andere DLL oder die EXE bereits geladen ist und Windows somit deine DLL verschieben müsste, was es aber nicht mehr kann,
vor allem auch deswegen, weil kaum jemand die ImageBase definiert und 99,99% aller Delphi-DLLs und EXEn eigentlich auf der selben Adresse liegen. ($00400000)


Es gibt auch Progrämmchen und EXE-Packer, welche nachträglich diese Reallocation-Table entfernen.
(die ist dafür da, damit Windows beim Verschieben alle Zeiger im Code anpassen kann -> auf Prozeduren, Konstanten, Typen, globale Variablen, ...............)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Jan 2020 um 15:17 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 18:02
IMAGE_FILE_RELOCS_STRIPPED:

Und damit blockierst du gleich ein Sicherheitsfeature des Betriebssystems.
Dort werden (wenn aktiv) die DLLs/EXEn im RAM willkürlich verschoben, damit mit böse Häcker in ihren Viren/Trojanern/... nicht einfach mit statischen Adressen in fremdem RAM Programmcode umschreiben können, weil das Gewünschte dann ja jedes Mal wo anders liegt. (beliebt z.B. in Buffer Overflow Exploits)

Und für DLLs ist es auch noch fatal, wenn an dieser Adresse eine andere DLL oder die EXE bereits geladen ist und Windows somit deine DLL verschieben müsste, was es aber nicht mehr kann,
vor allem auch deswegen, weil kaum jemand die ImageBase definiert und 99,99% aller Delphi-DLLs und EXEn eigentlich auf der selben Adresse liegen. ($00400000))
Es geht hier aber um die Grösse einer EXE und nicht einer DLL. Von daher ist das problemlos nutzbar und bringt den grössten Erfolg. Wenn man die Doku zu diesem Flag liest, ist klar, dass man das bei einer DLL nicht nutzen sollte/darf.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Wie bekomme ich die exe kleiner?

  Alt 28. Jan 2020, 15:09
Also als Alternative könntest du dein Projekt auf z.B. D7 "downgraden" und dann wäre es vermutlich nur noch um die 7-8 MB gross.
Und da gäbe es noch den MASM. SCNR
  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 04:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz