Delphi EXE Kompressor?[geschlossen]
-
03-07-2019 - |
Frage
An einem Punkt hatte ich ein nettes kleines Komprimierung-Dienstprogramm, zerschmetterte mein Delphi kompilierte EXE-Datei ist eine kleinere download-Größe, aber jetzt kann ich es nicht finden.Irgendwelche Empfehlungen?
Auch gibt es irgendwelche Nachteile der Verwendung dieser Arten von Dienstprogrammen?(Vor allem nutze ich Sie zu verkürzen, die download-Zeiten für ländliche / DFÜ-Benutzer).
Verwandte Frage: Gibt es irgendwelche Nachteile mit UPX zu komprimieren, eine ausführbare Windows-Datei?
Lösung
Vor Jahren sah ich in meiner ausführbaren Datei komprimiert den Download kleiner zu machen.
Was ich am Ende tun, und was ich für Sie empfehlen, ist ein Installationsprogramm wie Inno Setup zu verwenden, statt. Nicht nur, dass es eine einzelne EXE erstellen, die Ihr Programm installieren / deinstallieren, aber es komprimiert auch, dass EXE praktisch so viel wie ein separater Kompressor allein auf die ausführbare Datei tun würde.
Wenn das Programm installiert ist, dekomprimiert wird, so scheint es, nie einen Virus zu sein und nicht die Ladezeiten erhöhen.
So bekomme ich die Vorteile der kleineren Download-Größe und eine professionell aussehende Installationsskript zur gleichen Zeit.
P. S. Inno Setup ist frei.
Andere Tipps
Die Empfehlung ist, dass Sie nicht:
- EXE Kompressoren können Ihre Anwendung scheint wie ein Virus (Selbst modifizierenden) machen
- gzip / zip ist ebenso effektiv bei der Komprimierung und nicht mit Ihrer App bastele
- EXE Kompressoren machen die Ladezeiten Ihrer Anwendung erhöhen (es sei denn, Sie sind nur über das Setup-Programm zu sprechen, die eine andere Sache
Diese verrückten suchen Website ein Argument bringt ich in der fernen Vergangenheit gehört hatte (ob es wahr ist oder nicht, noch heute, ich bin mir nicht sicher, wahrscheinlich moderne Packer eine andere Strategie haben heute) Dieser Artikel verweist auf Win32! :)
http://topic.csdn.net/t/20000408/08/ 6785.html
Modern Multitasking OSes wie Windows 95/98 und NT verwenden, was ist ein „virtueller Speicher“ System bezeichnet. Wann Programme starten, die alle ihren Code ist nicht sofort in den Arbeitsspeicher geladen beim Start, wie es der Fall mit DOS Programme. Stattdessen werden nur Teile von aktiv ausgeführt wobei der Code sind in dem Speicher gespeichert. Zum Beispiel, sagen Ihr Programm hat eine Druckoption auf seinem Menü und Code dahinter, die Griffe der Druck. Dieser Code wird nur sein in den Speicher geladen, sobald der Druck Funktion wird zuerst durch den Benutzer ausgewählt. Und wenn nach dem Code geladen Speicher wird die Print-Funktion nicht verwendet für eine Weile wird das System „verwerfen“ der Code, die Freigabe des Speichers es besetzt, wenn eine andere Anwendung dringend braucht Erinnerung. Dies ist Teil ein Prozess „Paging“ genannt und ist völlig transparent für das Programm.
Eine andere Möglichkeit, Paging unter Win32 spart Speicher ist es verursacht multiple Instanzen eines Programms (oder DLL) den gleichen Speicher für Code teilen. Im Mit anderen Worten, die unter normalen es Umstände gibt keine wirkliche Unterschied in der Menge der körperlichen Speicher für Code zugewiesen zwischen Start 100 Instanzen eines Programms und Starten einer Instanz.
Wenn alle Win32-Programme verhielt sich wie DOS-Programme, geladen alles in Speicher und es dort, bis die Aufbewahrung Programm beendet und auch nicht Austausch von beliebigen Speicher zwischen mehreren Fällen können Sie sich wahrscheinlich vorstellen wie schnell physischer Speicher laufen konnte out auf Systeme mit einer begrenzten Menge, verursacht Platte starten Swapping.
Doch dies ist genau das, was Strom Win32 EXE Kompressoren tun, um Ihre EXE / DLL! Sie vollständig gehen gegen das Paging-System O durch die gesamten Code in dem Speicher zu dekomprimieren und hält sie dort bis zum Ende. Und weil Code nicht in einem gespeicherte "Raw" Format in der EXE-Datei (das heißt die gleiche Weise sie im Speicher gespeichert ist), die O ist nicht in der Lage Code zu teilen zwischen mehrere Instanzen.
Ich weiß nicht jeder, der speziell für Delphi, aber UPX ist sehr beliebt für diese Art der Sache. Der einzige Nachteil ist, dass die ausführbare Datei dekomprimiert werden muss, wenn es ins Leben gerufen, und dass einige Zeit essen kann. Es scheint für sanely Größe ausführbarer Dateien sehr schnell zu sein, aber.
Die Sie wahrscheinlich denken an ASPack - es ist ein EXE-Kompressor in Delphi geschrieben, aber wird jede EXE komprimieren. Es könnte zusätzlich auch auf Delphi EXE obwohl tun. Ich würde mit den anderen Antworten zustimmen, dass Sie nicht einen EXE-Kompressor nur auf Download-Zeiten speichern verwenden sollten. Es kann bestimmte Situationen, in denen eine EXE-Kompresse ist eine gute Idee, aber im Allgemeinen ist es nicht.
Statt einen guten Installation Builder verwenden, vor allem, wenn Sie einen finden können, die 7-Zip-Kompression verwendet. Ich weiß InstallAware verwendet 7zip intern für maximale Kompression. Je nachdem, welche Versionen von Delphi besitzen Sie auch Sie eine InstallAware Lizenz haben.
Wenn nichts anderes können Sie ein selbst extrahierendes Archiv bauen mit grundlegenden installieren Verhalten mit 7zip kostenlos. Es ist ein separater Download für SFXs für Installateure.
Verwenden Sie UPX mit lzma Option für max Kompression.
upx --lzma yourfile.exe
Die Haupt Unannehmlichkeit einer komprimierten EXE oder DLL ist, dass das Betriebssystem nicht den Code unter mehreren Instanzen gemeinsam nutzen kann.
So Speicher Sie verschwenden, dekomprimiert haben, um jedes Mal, wenn Sie eine Instanz starten, zeigt ein Virus-ähnliches Verhalten, ohne auch nur einen Download-Vorteil über eine komprimierten installieren.
Nur positiver Fall ist, wenn sie direkt von einem Netzlaufwerk zu starten.
Ich glaube, Terminal-Server (Wie z.B. Citrix) verwenden den gleichen Speicher für Sie Anwendung, die binäre wenn es nicht komprimiert ist.Also eine komprimierte exe riechen konnten eine kleine Katastrophe in einer Citrix-Umgebung.
UPX sollte funktionieren, obwohl es nicht Delphi spezifisch ist.
Ich verwende petite: http://un4seen.com/petite/
Ich würde auch für upx stimmen. Neben den Nachteilen, die erwähnt wurden sie schützt auch vor Grund Reverse Engineering und diese lahm „Resource Hacker“ Tools. Die durch die Art und Weise sind viele, und die meisten von ihnen nicht eine komprimierte ausführbare Datei zu öffnen.
, fragte ich eine Frage über die Nachteile der UPX mit Delphi ausführbare Dateien hier auf SO eine Weile zurück, und ich habe einige große Antworten.
Gibt es irgendwelche Nachteile zu mit UPX eine ausführbaren Windows-Datei zu komprimieren?
Sie können mit PECompact , da die Menschen es einfach nicht entschlüsseln kann, und als Test zeigte, (zeigte auf der Hauptseite, einfach nach unten scrollen ein bisschen) es ist besser als ASPack oder UPX, ich habe mit ihm auf meinem früheren Delphi-Projekte