![]() |
Warum sind *.exe's so groß
Hi,
beim Borland Compiler ist doch immer von sehr kompakten Programmen die Rede. Wenn ich aber meine Programme erstelle, kann ich meistens mit einer ZIP-Komprimierung bis zu 50% Größe einsparen. :gruebel: Han ich da was falsch eingestellt oder sind die Progs doch nicht sooooooo kompakt? MfG Paul |
Re: Warum sind *.exe's so groß
Du hast alles richtig gemacht. Es müssen nur jede Menge an Laufzeit-Krams mitgegeben werden ;). Normalerweise wird das halt mit in die EXE geschoben, daher auch die Größe.
Bei VB ist das z.B. nicht anders, nur wird das nicht in die EXE geschrieben... Aber ich will da gar nicht so genau drauf eingehen, da wir das schon öfter hatten ;) PS: Aber ein Tipp noch: Wenn du kleine Anwendungen schreiben will, dann gibt es 2 Möglichkeiten. Du kannst einmal so Programmieren´, dass du auf die VCL/CLX verzichtet und alles selber übernimmst ( ![]() |
Re: Warum sind *.exe's so groß
Falls du mehreren Echsen ausgeben willst, solltest du dich mal über RunTime-Packages schlau machen.
Dadurch kannst den Riesenbatzen, den die VCL und ein paar andere Packages ausmachen, auslagern. Dadurch musst du sie nur einmal ausliefern um sie in mehreren Echsen zu verwenden. Nachtrag: Um den Effekt zu sehen musst du nur mal in den Projektoptionen unter Packages "build with runtime packges" aktivieren. Deine Echse sollte jetzt nur noch ein paar Kilobyte groß sein. ;) Wenn du nur bestimmte Packages extern verklinken willst löschst du einfach allen anderen aus der Liste (der semikolongetrennte Text unten). |
Re: Warum sind *.exe's so groß
Zitat:
|
Re: Warum sind *.exe's so groß
Zitat:
|
Re: Warum sind *.exe's so groß
Zitat:
Dann noch weitere MergeModule, die Projektbezogen sind. Das ganze installiere ich in die Common Files (bzw. gemeinsame Dateien) in einen Unterordner. Außerdem füge ich der Umgebungsvariable %PATH% diesen Ordner hinzu. Wenn ich jetzt ein SetUp erstelle muss ich nur noch die MergeModules hinzufügen und der Rest passiert dann von alleine. Willst du es "zu Fuss" machen, dann lege einen Ordner (am besten in die common files) an und füge diesen zu %PATH% an. (also wie oben nur halt "zu Fuss" :mrgreen: ) Dadurch kann deine Anwendung ganz normal starten. Ohne das die Packages im Anwendungsverzeichnis leigen müssen. Das ganze ist vielleicht auch für die Hobbyprogrammierer praktisch, die ihre Anwendungen im Internet anbieten. Ihr könntet einfach sagen das hier braucht ihr für meine Programme, und schon spart ihr Traffic (wenn ein User 2 Apps lädt muss er die Packages nur einmal laden ;) ) @tl Sinn und Zweck der Trennung von DesignTime & RunTime packages ab D6 war es, genau diese Streitigkeiten zu beseitigen. ;) |
Re: Warum sind *.exe's so groß
Zitat:
Ich meinte jetzt eigentlich namentlich vclXX.bpl und rtlXX.bpl, denn die brauche ich, wenn die die Laufzeitpackages nicht in die EXE linke... Wenn ich mich recht erinnere ging es bei den Streitigkeiten um die Klassen, die in designXXX.bpls zu finden sind, bzw alles, was sich in %DELPHI%/Bin an Packages befindet. However, brauchen tut man's trotzdem, ob in der EXE oder als Package anderswo, und damit sind wir wieder bei VisualBasic angelangt... ;-) |
Re: Warum sind *.exe's so groß
Zitat:
Damit kannst Du trennen: 1 Setup mit FullInstall (Progi + BPL) oder 1 Setup mit nur Progi + 1 Setup mit nur BPL und gemeinsame Biblios Die BPLs sollten im Windows-Verzeichnis oder noch besser im "Anwendungsdaten-Verzeichnis" ausgelagert => kein Path-Änderung nötig (was Aufgrund mancher AntiVirus-Software sooderso nicht immer zugelassen wird...) Weiterhin kannst Du mit InnoSetup einen "Default Setup" anlegen... dann brauchst Du pro Projekt nur noch die Exe hinzuzufügen und das wär's (fast;) Gruß, |
Re: Warum sind *.exe's so groß
Eine Alternative:
Ich hatte mehrere Programme unter Delphi 3 Professional und Delphi 7 Personal compiliert und dabei festgestellt, dass die *.EXE unter Delphi 7 Personal deutlich größer geworden sind. Ich packe die *.EXE dann mit ![]() |
Re: Warum sind *.exe's so groß
Zitat:
![]() Wer ein VisualStudio sein eigen nennt hat dort schon eingabute SetUp Projects, die sich autom. anhand der Projekte in der Solution voreinstellen. ;) (Sollte Borland UNBEDINGT einführen :) ) Unter Windows sollte man Installationen IMMER mit MSI machen alles andere sind nur billige Bastellösungen (sorry für die NSIS-Fans, ist leider so :? ) Nur MSI-Installationen bewahren ein System vor doppelt installierten Bibliotheken oder geklauten Bibliotheken bei einer Deinstallation. ;) Außerdem schützt Windows dann deine Anwendung installiert beim Klick auf den ShortCut Bibliotheken, die zwischendurch gelöscht wurden (es reparariert eigentlich alles wieder, Registry, environment path,...) Zitat:
Zitat:
|
Re: Warum sind *.exe's so groß
Zitat:
|
Re: Warum sind *.exe's so groß
Zitat:
Zitat:
...und wo Delphi-progs selbst benutzt werden können, um InnoSetup bei Bedarf mit eigener "Funktionen" zu erweitern (eigene Krypto, eigene Setup-Dialoge usw) ... ...und wo so niedlich kleine ultra-komprimierten Setup.exe gebacken werden... ...und alles schön sauber mit Delphi geprogt ;) ...und Kylix kompatibel (ob das bei MSI auch so ist ?)... Tsss tsss tss :o)) Grüße, |
Re: Warum sind *.exe's so groß
Zitat:
|
Re: Warum sind *.exe's so groß
Ihr müsst das mal bei delphi... glaub 8 oder 9 wars testen da sind die exes wen die vcl dabei ist schonmal anderthalb(1,5 für nichtschwaben) MB groß!
naja ich find die vcl trotzdem praktisch, ich hab D7 da ists 500kb des geht ja noch und ich denk wenn ich ein gutes programm bau dann kommts mir drauf an dasses funktioniert und ich hab keine zeit mit den windows apis noch ne oberfläche zu basteln wenn ichs doch auch mit ein paar klicks haben kann. Und wegem traffic: ich zahl 50cent pro gb, da sind 500kb als dateigröße wohl noch zu verkraften. Alternativ könnte man ja sowas machen: Du baust dir ein programm OHNE visuellen elementen (also auch keine VCL) und dein eigentliches programm verpackst du. Dann kannst dus einfach an die erste EXE hinhängen (wie wir ja alle wissen, du kannst einfach beliebige daten hinten anne exe reinhängen solang der eigentliche teil vom programm unverändert bleibt) und die kleine non-vcl exe hat die aufgabe dein programm zu entpacken und dann erst ausführen dann sollts auch wenigstens bissle kleiner sein. |
Re: Warum sind *.exe's so groß
Zitat:
das ist nur bei der VCL.NET der Fall. Und auch nur, falls diese in die EXE mithineingelinkt wird (also falls die VCL.NET nicht auf dem Zielrechner vorhanden ist). mfG mirage228 |
Re: Warum sind *.exe's so groß
Oh schön, ich werde herausgefordert.
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Wie dem auch sei, ich darf wohl ohne schlechtes Gewissen behaupten, dass ich ein bisschen Erfahrung mit dem MSI und Inno habe. Hätte ich ein Tool wie bspw. das, was es im Adventsgewinnspiel der DP zu gewinnen gab, dann würde ich mehr mit dem MSI machen. Allein schon wg. der oben angesprochenen Möglichkeiten. |
Re: Warum sind *.exe's so groß
Zitat:
Wobei auch MSI nicht zaubern kann. Angenommen: Jemand installiert eine 3rd-Party Assembly in den GAC (benutzt dabei aber so Bastelsetup) -> allles schön und gut Jetzt kommst du und versuchst deine Installation mit bestem Wissen und Gewissen (also mit MSI ;) ) zu erstellen. Auch du benötigst diese Assembly und installierst sie. Der Datenbank von Windows wird jetzt gesagt: Product Code {XXX-123-ABC} hat sich für die Assembly XXX.dll eingetragen. Da Installation 1 nur ein Billig-XCopy&RegistryMerge-Setup verwendet hat, hat Windwos keine Ahnung, dass die erste Installation auch diese Assembly braucht. Wenn der User deine Anwendung deinstalliert, wird der MSI diese Assembly sang- & klanglos mit wegschmeißen. (ein seiner Aufgaben ist es ja das System von Altlasten freizuhalten ;) ) Die erste Anwendung schaut also in die Röhre. :mrgreen: Was wäre, wenn die erste Anwendung vor der 2. deinstalliert werden würde? Nunja, das erste Setup führt keine Datenbank wer welche Assembly benötigt -> Es würde sie sowieso wegschmeißen. Deine Anwendung hat aber Windows, das über sie wacht. :) Der User klickt auf den Shortcut und prompt erscheint ein kurzes "preparing Installation", man sieht kurz eine Progressbar aufblitzen und schon ist deine Assembly wieder genau dort, wo du sie brauchst. Der User bekommt (bis auf das kurze Fensterchen) nix davon mit. Er merkt nur eins: Deine Anwendung funktioniert immer, während andere schonmal rumzicken können. Aufgrund dieses Technologievorsprunges kann ich persönlich alle andere Setup engines nur als billige oder hoffnungslos veraltete Bastellösungen abtun. ;) Zitat:
Als .Net-Entwickler (was ich nunmal vorrangig bin ;) ) kann man ganz einfach von ![]() Dadurch hat man eine absolute Kontrolle über das Setup, ohne seine "Muttersprache" verlassen zu müssen. OK, Linux kompatibel ist es natürlich nicht. Aber wenn juckt das schon. :P |
Re: Warum sind *.exe's so groß
Zitat:
Wenn man sich an die üblichen Vorgehensweisen hält, ist Deployment unter Linux sowieso anderster... Zitat:
Aber noch alternativer könnte man es so machen: .NET: WinForms benutzen, wie man das normalerweise macht. Win32: Die Routinen benutzen, die Windows dir gibt. In beiden Fällen ist alles, was benötigt wird, schon auf dem Zielsystem installiert, oder es ist mächtig was schief gegangen :mrgreen: |
Re: Warum sind *.exe's so groß
mir ist nochmal ne geile idee eingefallen:
ein "prelauncher", eventuell auch so dass er die exe mit reinpackt nur mit dem unterschied: das erste programm enthält zwar ein fensterle das müsste man mit der winapi machen :-( und das 2. programm mit vcl und die vcl extern verlinken. das 2. programm dann eventuell auch unverschlüsselt in das erste rein dann wirds wohl trotzdem net so groß, ohne vcl. und das 1. programm prüft jetzt beim starten ob die vcl-datei da ist wenn nicht kommt so ein datei runterladen fensterle wo er die vcl irgendwo(von deinem server oder so) runterlädet und installiert und dann erst das 2. programm startet. -Dominik |
Re: Warum sind *.exe's so groß
Zitat:
|
Re: Warum sind *.exe's so groß
Zitat:
Habe ich schon mehrfach gemacht. In dem Moment indem man Runtime Packages benutzt, muss man eh die VCL & RTL extern verllinken. Jetzt macht man sich nur noch ein kleines Gerüst aus einem Formular, einem Menü,... Sämtliche Package enthalten eine Funktion á la InitializePackage. Die gibt eine Instanz einer Klasse Package loader zurück Welche von einer abstrakten Klasse ableitet, die du (wie die HauptForm-Klasse auch) in einem Package hast, auf das deine Echse und alle Packages verweisen ;). In der hat man dann alles reingepackt, was das Modul in deinem Hauptform anrichten soll. So kannst du modulare Anwendungen und PlugIns machen, ohne solche Dinge wie "richtige" Dlls ( :? ) zu benutzen. (Ich weiß BPLs sind Dlls, aber man kann sie verwenden als wären es keine :) ) Mag sich kompliziert anhören, aber hast du den Code einmal, kannst du das immer wieder machen... |
Re: Warum sind *.exe's so groß [etwas OT]
Zitat:
Zitat:
Manche benutzen sogar ![]() Zitat:
Hmmmm... was ist ein Patch? Hmmmm... Zitat:
Zitat:
Zitat:
Zitat:
![]() Ich liebe ALLE Programmiersprachen, vorausgesetzt es handelt sich um Delphi Zitat:
Im Übrigen: ich habe mal letzte Woche einer getroffen, der wollte tatsächlich nur die neue Version seines Lieblingsprogramm von einer Zeitschrifften-DVD auf seinem PC installieren... :cheers: |
Re: Warum sind *.exe's so groß
zum MSI: vielleich will jemand ein einfach-ausführen programm und nicht ne setup routine wo 5 minuten zum installieren und ne viertel stund zum "vorbereiten" braucht... O.o
|
Re: Warum sind *.exe's so groß
also wenn das zwischen prof. Y und Mathias so weitergeht, fühl ich mich hier bald wie in den heise-kommentar-foren :?
Aenogym |
Re: Warum sind *.exe's so groß
Ich kenne die Heise-Foren nicht, ist mir aber auch egal, @Aeno. Ich stimme mit Robert übrigens nicht überein, dass alle anderen Lösungen außer MSI
Zitat:
Für größere Projekte, wo es auch auf die von Robert angesprochenen Punkte ankommt, würde ich dennoch den MSI bevorzugen. Auch wenn die von mir angesprochenen Punkte durch Ironie ins Lächerliche gezogen wurden bzw. gezogen werden sollten, können sich Inno Setup und NSIS (um die beiden zu nennen, von denen ich halbwegs Ahnung habe) davon eine Scheibe abschneiden. @edosoft: Keiner verlangt von dir, dass du deinen Texteditor oder MP3-Renamer, oder was immer du programmierst, mit einem MSI-Setup verpackst. Ich glaube, Robert hat die interessanten Aspekte des MSI in Bezug auf die Dateisicherheit (Versionskontrolle, usw.) deutlich gemacht. Für deine Zwecke (ohne deine Arbeit jetzt abwerten zu wollen) reicht Inno Setup oder ein vergleichbares "einfaches" Programm sicher aus. |
Re: Warum sind *.exe's so groß
Wenn wir schonmal beim Thema sind... Gibt es irgendwo ein ausführliches und "langes" Tutorial zum Erstellen von Setups mit MSI?
Ich verwende sonst Setup Factory und bin auch eigentlich ganz zufrieden damit, bis auf ein paar Kleinigkeiten, die mich daran stören :> |
Re: Warum sind *.exe's so groß
Zitat:
Und wenn du ein professionelles Tool benutzt (InstallShield, Wise, usw.), dann unterscheidet sich die Bedienung, so dass ein Tutorial zum entsprechenden Programm wohl sinnvoller wäre. :) Als kostenlose Alternative fällt mir gerade noch WiX ein, das auch bei #develop dabei ist. Aber da bin ich nicht auf dem Laufenden. Die Version, die ich mal ausprobiert habe, hatte ein Problem mit langen "WiX-Vorlagen" (:mrgreen:). Die wurden im Editor nur teilweise angezeigt. Und visuell konnte man, AFAIR, gar nicht arbeiten. Setup Factory kenne ich nur von den ATI-Omega-Treibern. Aber das ist nicht kostenlos, oder? Schade, ich hätte auch gern mal damit rumprobiert. Was stört dich denn bei diesem Tool? |
Re: Warum sind *.exe's so groß
Nee ist leider nicht kostenlos...
Es sind nur Kleinigkeiten die mich stören .. zum Beispiel kann man schlecht multiple Anwendungsinstaller bauen... Also Beispielsweise du hast 3 Anwendungen, die fast alle gleich aufgebaut sind und sich nur die Installationspfade und Dateien selbst unterscheiden und du möchtest im Prinzip ein Template für alle 3 Anwendungen bauen... Geht leider nicht, da man viele Sachen weder Exportieren noch Importieren kann.. Ausserdem kann man die Standard-Installationssprache nicht auf Deutsch stellen sondern muss immer wieder die Templates auf Deutsch umstellen... Sind alles keine Weltbewegenden Probleme, aber halt Kleinigkeiten die stören -g- |
Re: Warum sind *.exe's so groß
Hallo,
was sind bei dir eigentlich grosse Programme? Bei mir ergeben 200000 Zeilen Code ca 1,8MB. Ist das für dich gross? Wohlgemerkt alles drin und VCL. Gruss Rainer |
Re: Warum sind *.exe's so groß
Das ist relativ. Du schreibst ja nicht, was das für ein Programm ist. So gesehen sagen deine Angaben (200.000 Codezeilen und 1,8 MB) nichts bzw. nicht viel aus. Ich könnte bspw. ein Programm mit weniger Zeilen schreiben. Dafür verziere ich es aber mit einer Bitmap (32-Bit-Farbtiefe), die allein schon mehrere MB groß ist. Das macht mein Programm nur auf der Platte größer, aber vom inhaltlichen Umfang her wäre es eher klein.
|
Re: Warum sind *.exe's so groß
Zitat:
![]() Die Freeware Version kann zwar nicht viel, aber denRest kannst du ja mit Orca tunen. ;) Zitat:
![]() Und für alle, die .netter sind: ![]() Zitat:
Wie ich bereits schrieb: Das sollte Borland UNBEDINGT nachholen. |
Re: Warum sind *.exe's so groß
Ich weiß zwar worauf du hinauswillst, aber ich meinte das anders. Wenn man sich schon ein Profi-Tool holt (und soweit ich weiß binden sich Wise und InstallShield wohl auch ins Visual Studio ein :? :oops:), dann wäre ein Tutorial bzw. eine gute Doku zu diesem Programm besser als eine allgemeine Doku zum MSI. Denn dann interessiert mich doch nicht, was ich mit dem MSI anstellen kann, sondern wie ich das mit dem Programm mache. :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 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