Frage zu makecab.exe und extract.exe, Resource einbinden?
-
Wenn du mit Resourcen arbeitest, gibst du denen keine eindeutigen IDs?
-
gosha16 schrieb:
Wenn du mit Resourcen arbeitest, gibst du denen keine eindeutigen IDs?
Noch habe ich gar nichts vergeben, da ich bis jetzt noch über die funktionsweise des Oben genanten Programms philosophiere. Irgendwie muss der Copy-Befehl ja die Resourcendatei aktualisiert haben. Hmm...
-
Noch jemand eine Idee?
-
Ich persönlich würde das folgendermaßen lösen. extract.exe hat als resource ein leeres .cab archiv. und dann würde ich dieses mit UpdateResource() durch das neue Archiv ersetzen.
-
Nein! Die Technik ist hier anders.
Wenn die EXE startet ermitelt sie von wo sie selbst gestartet wurde und wie groß ihr eigentliches Image ist. Dast ist eben nur der Teil der Extract.exe. Dese Infos stehen im PE Header.
Dann ermittelt diese EXE einfach das nächster Byte nach diesem Image und liest die weiteren angehängten Daten und speichert diese CAB-Datei in einem temporären Verzeichnis. Dann beginnt die eigentliche Extraktion.
Kommt nichts mehr hinter der eigentlichen EXE. Ist die Datei also nicht größer als das ursprüngliche Extract.exe dann wird diese Meldung angezeigt.
Wenn die API auch die Funktion hat einen Stream angeben zu können wir deinfach die EXE geöffnet und der Filepointer an das Ende des Executable Images gesetzt und dieses Handle an die Extraktions Routine übergeben.Siehe auch:
http://www.codeproject.com/KB/install/sfxinst.aspx
http://www.codeproject.com/KB/files/self_extractor.aspx
http://www.codeproject.com/KB/files/sfxframework.aspx
-
Hello! dckfkkd interesting dckfkkd site!
-
Heyy es gibt UpdateResource()? Das heißt, man kann so einfach eine sich selbst verändernde .exe machen? Wie gerne haben sowas Antiviren-Programme?
Dann könnte man doch einfach so normalerweise externe Dateien wie ne config.ini einfach in der .exe lassen.
-
Fräge nebenbei! schrieb:
Heyy es gibt UpdateResource()? Das heißt, man kann so einfach eine sich selbst verändernde .exe machen? Wie gerne haben sowas Antiviren-Programme?
Dann könnte man doch einfach so normalerweise externe Dateien wie ne config.ini einfach in der .exe lassen.Möglich wäre es, aber es wäre unsinig und unpraktikabel.
Der Ort an dem eine EXE normalerweise steht ist schreibgeschützt.
Dieser Weg wäre wirklich unsinnig...Und warum sollte man Code, mit lokalen Einstelungen eines PCs (Daten) mischen?
-
Achso.
Naja, viele meiner Programme benötigen volle Adminrechte, also wäre das wohl nicht das Problem?!
Ich finde halt eine einzelne .exe schöner als zB. noch eine extra .ini Datei für die Einstellungen.
-
Fräge nebenbei! schrieb:
Achso.
Naja, viele meiner Programme benötigen volle Adminrechte, also wäre das wohl nicht das Problem?!
Ich finde halt eine einzelne .exe schöner als zB. noch eine extra .ini Datei für die Einstellungen.Und ich finde es extrem hässlich solch eine EXE zu kopieren und verbogene Einstellungen zu finden, die nirgendwo hinpassen. Oder auf einem Terminalserver die Einstellungen meines Kollegen in meinem Tool wieder zu finden...
Konfiguration hat in vielen Fällen etwas persönliches...

PS: Und weil es einen Fehler in den Einstellungen gibt, und Dein Programm nicht mehr starten kannst, dann kann man auch das Programm gleich neu installieren? INI Datei wegschmeißen, Registry ändern ist einfacher...
-
Hello! ebdbdgb interesting ebdbdgb site!