Entwickler-Ecke
Sonstiges (Delphi) - Dateigröße von simpler Delphi-Anwendung senken
LonghornUser - Sa 24.10.09 13:26
Titel: Dateigröße von simpler Delphi-Anwendung senken
Hallo,
ich möchte ein Programm bauen, welches nur 1 Aufgabe hat: Einen Schlüssel zur Registry (speziell HKEY_LOCAL_MACHINE), abhängig von einem ItemIndex einer Combobox, hinzufügen.
Wenn ich das auf die schnelle umsetze, ist die erzeugte EXE ja doch noch relativ groß (ich benutze Delphi 2010). Wie kann ich unbenutzte Units ausklammern bzw. ganz allgemein die Dateigröße senken?
Vielen Dank!
Ciao LHUser
LonghornUser - Sa 24.10.09 13:58
Und ich kann nicht einfach irgendwie in Delphi auswählen, welche Units nicht mit eingebunden werden sollen? Würde sich nur noch die Frage stellen, wie ich herausbekomme, welche Units ich für mein Vorhaben brauche, und welche nicht.
Tryer - Sa 24.10.09 14:09
Klar kannst Du das, Du kannst die nicht beötigten Unit´s aus der uses-Klausel rausschmeissen. Nur ohne "Forms" keine Fenster, keine TCombobox. Und mit Forms: groß.
Um ohne die Unit Forms visuelle Komponenten zu erzeugen arbeitet man "nonVcl", was im Tutorial von Assabad beschrieben ist.
Die Frage ist ob es nicht reicht einige wenige ".reg"-Dateien anzulegen aus denen man dann die passende starten kann (also ganz ohne Delphi). Oder ob es auch eine Konsolenanwendung tut (WriteLn('1. bla, 2.blub, Bitte "1" oder "2" tippen')..).
Es gibt auch "ExePacker", aber ich würde im Zusammenhng mit Registry-Zugriffen erwarten das da ggf. AV-Programme ansprechen.
LonghornUser - Sa 24.10.09 14:52
Mhm, das mit der *.reg-Datei könnte man versuchen. Das Programm würde dann einfach entsprechende *.reg-Dateien erzeugen und diese dann ausführen.
Ich werde das nachher mal ausprobieren. Danke für den Tipp ;)
Delete - Sa 24.10.09 14:55
Die Dickmacher sind die Units Forms und Classes. wenn du kein Fenster brauchst, da mach doch eine Konsolenanwnedung. Je nach Funktionalität braucht man da gar keine zusätzlichen Units oder höchstens die Units Windows und SysUtils. Und um ein paar Statusmeldungen auszugeben, reicht ja eine Konsolenanwendung.
LonghornUser - Sa 24.10.09 15:59
Also ich habe es jetzt so gemacht, dass ich regedit.exe mit meiner erzeugten temporären *.reg-Datei als Parameter aufrufe. Dies mache ich über ShelLExecute_AndWait(), was ich brauche, damit ich nach der Registry-Ja/Nein-Abfrage, überprüfen kann, ob der User nun zugestimmt oder abgelehnt hat.
An sich eine sehr schöne Lösung im Vergleich zu einer neuen platzfressenden Anwendung. :)
Nur eines, was mir noch aufgefallen ist: Kann es sein, dass D2010-Anwedungen doch recht viel mehr Platz benötigen als solche von D2009?
jaenicke - Sa 24.10.09 16:03
Warum benutzt du denn nicht den Parameter /s, damit die Abfrage erst gar nicht kommt? :gruebel:
Und wenn du doch ein Programm hast: Dann kannst du auch direkt auf die Registry zugreifen, dadurch wird das Programm auch nicht wirklich größer.
Wenn es wirklich unbedingt so klein sein muss (warum?!?), wäre C# oder C++ auch denkbar, denn die Exe-Dateien sind dann deutlich kleiner auch mit Formularen.
LonghornUser - Sa 24.10.09 16:07
jaenicke hat folgendes geschrieben : |
Und wenn du doch ein Programm hast: Dann kannst du auch direkt auf die Registry zugreifen, dadurch wird das Programm auch nicht wirklich größer.
|
Es geht darum, dass ich Werte in HKEY_LOCAL_MACHINE schreiben will mit einem Programm, dass außer dieser Aktion keinerlei Adminrechte braucht. Und da ich dem User nicht aufbürden will, die Software immer als Admin zu starten (was zu immer wiederkehrenden UAC-Abfragen führte), suchte ich nach einer Lösung, aus meinem Programm (was nicht als Admin ausgeführt wurde) das Schreiben in die Registry trotzdem zu machen.
jaenicke hat folgendes geschrieben : |
Warum benutzt du denn nicht den Parameter /s, damit die Abfrage erst gar nicht kommt? :gruebel:
|
Das geht :oops: ? Mhm, das wäre natürlich ne Idee ;)
jaenicke - Sa 24.10.09 16:08
Starte doch einfach die eigene Exe mit Adminrechten und übergib die durchzuführenden Aktionen als Parameter oder via IPC. Genauso arbeitet auch mein in die Exe integrierter Updater.
LonghornUser - Sa 24.10.09 16:09
Das wäre auch ne Idee, aber so funzt es auch ;)
turboPASCAL - Sa 24.10.09 21:00
Schicker wärs so:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!