[Help] Datei aus .jar verändern

01/18/2013 19:54 v1Dr333s#1
Hallo :)
Ich versuche seit Tagen vergeblich, eine Datei in einer .jar zu ändern.
So simpel es klingt..
Datei direkt ändern kann keine UDF vernünftig, also muss ich die .jar entpacken, die Datei ändern, und dann wieder verpacken.
Hier mal mein Script:
PHP Code:
FileCopy(@AppDataDir&"\.minecraft\bin\minecraft.jar",$ordner&"\minecraft.zip",1)
_7ZIPExtractEx(0$zip$ordner&"\temp"011000)
FileCopy(GUICtrlRead($input1), $ordner&"\temp\textures\blocks\"&GUICtrlRead($combo1),1)
FileDelete(
$zip)
_Zip_Create(
$zip)
_Zip_AddFolderContents(
$zip$ordner&"\temp",0) 
(GUICtrlRead($input1) ist der Pfad zur neuen Datei, GUICtrlRead($combo1) ist der Name der zu ersetzenden Datei, z.B. "dirt.png".
Archiv wird kopiert und dabei umbenannt.
Zip wird enpackt.
Die alte Datei wird durch die neue ersetzt.
Zip wird gelöscht.
Leere Zip wird erstellt.

Bis hierhin funktioniert alles, danach stürzt das Programm ab, keine Error Meldung oder ähnliches.
Ich benutze eine Mischung aus der "7Zip.au3" under der "_Zip.au3"(nicht "Zip.au3").
Das entpacken funktioniert nur bei 7Zip vernünftig, alle Funktionen zum Verändern der Datei im Archiv failen.
Alle anderen Funktionen, außer "_Zip_AddFolderContents", machen den ganzen Ordner in die Zip, nicht nur den Inhalt.

Kann mir jemand helfen ?
01/18/2013 20:08 YatoDev#2
musst mal die udf für winrar 2011 googeln , hab ich selbst mal benutzt . wenn du eine datei in der rar/zip/jar bearbeiten willst wird diese temporär sowieso wo entpackt .
01/18/2013 20:13 v1Dr333s#3
Quote:
Originally Posted by ~ⓜⓐⓢⓣⓔⓡ~ View Post
musst mal die udf für winrar 2011 googeln , hab ich selbst mal benutzt . wenn du eine datei in der rar/zip/jar bearbeiten willst wird diese temporär sowieso wo entpackt .
gibt keine UDF würd Winrar.
Und selbst wenn, wäre sie ziemlich unnötig, man bräuchte ja winrar dafür auf dem PC..

Wenn ich eine Datei in einer rar/zip/jar verändere, wird nur die alte Datei durch die Neue ersetzt, und auf keinen Fall das ganze Archiv entpackt... :facepalm:
01/18/2013 20:16 Cambios#4
Also das geht folgendermaßen:

1) Jar zu Zip Dateiendung umbenennen zb aus test.jar dann test.zip machen
2) Mit Winrar entpacken
3) mit einem Java-Decompiler die class dateien die dabei rauskommen Decompilieren und als java dateien speichern
4) Änderung am Source vornehmen
5) Erneut als *.Jar mit dem Programm Javac des Java Developement Kit compilieren
6) Freuen

Du kannst die Dateien die du aus der umbenannten Jar Datei hast nicht einfach erneut in ne Zipdatei packen, das funktioniert nicht.. Du musst es erneut Compilieren lassen (stichwort javac).

Tutorial dazu was ich auf die schnelle fand -> [Only registered and activated users can see links. Click Here To Register...]


Grüße
01/18/2013 20:18 YatoDev#5
du verstehst das falsch .....
1. klar brauch man winrar auf jedem pc.

ich habe geschrieben das die 1 datei temporär entpackt wird /bei winrar/ ok und jetzt helf ich nicht mehr , ich hab hier was geschrieben der nächste post kommt und dadrin steht das ich keine ahnung hab .
01/18/2013 20:23 v1Dr333s#6
Quote:
Originally Posted by Cambios View Post
Also das geht folgendermaßen:

1) Jar zu Zip Dateiendung umbenennen zb aus test.jar dann test.zip machen
2) Mit Winrar entpacken
3) mit einem Java-Decompiler die class dateien die dabei rauskommen Decompilieren und als java dateien speichern
4) Änderung am Source vornehmen
5) Erneut als *.Jar mit dem Programm Javac des Java Developement Kit compilieren
6) Freuen

Du kannst die Dateien die du aus der umbenannten Jar Datei hast nicht einfach erneut in ne Zipdateie packen, das funktioniert nicht.. Du musst es erneut Compilieren lassen (stichwort javac).

Tutorial dazu was ich auf die schnelle fand -> [Only registered and activated users can see links. Click Here To Register...]


Grüße
Eine .jar ist wie ein Archiv aufgebaut, und ich möchte nur ein Bild in diesem Archiv ändern. Dafür brauche ich kein % Java..

Quote:
Originally Posted by ~ⓜⓐⓢⓣⓔⓡ~ View Post
du verstehst das falsch .....
1. klar brauch man winrar auf jedem pc.

ich habe geschrieben das die 1 datei temporär entpackt wird /bei winrar/ ok und jetzt helf ich nicht mehr , ich hab hier was geschrieben der nächste post kommt und dadrin steht das ich keine ahnung hab .

alle UDFs "funktionieren" auch ohne Winrar auf dem PC.

Du hast geschrieben "wenn du eine datei in der rar/zip/jar bearbeiten willst wird diese temporär sowieso wo entpackt ."
Das stimmt nicht. Ich habe nicht gesagt, dass du keine Ahnung hast, nur dass es nicht stimmt.
Entpack mal ein relativ großes Archiv, und schieb mal in das Archiv nur eine Datei rein.
Du wirst einen sehr großen zeitlichen Unterschied bemerken..
Wenn du mit "diese temporär sowieso wo entpackt ." die zu ersetzende Datei meinst, und nicht das komplette Archiv, stimmt es auch nicht. Sie wird einfach gelöscht.
01/18/2013 20:53 YatoDev#7
noch mal extra für dich :
WINRAR !!!! entpackt die datei die man EINZELN verändern will temporär . DENN dateien die gezipt oder sonstwas sind SIND UNBRAUCHBAR .
Ich hab dir nur etwas vorgeschlagen , du hast hier gefragt wie also beschwär dich doch nicht .
Außerdem : ändern und rein-kopieren da liegen welten dazwischen .
01/18/2013 20:58 v1Dr333s#8
Quote:
Originally Posted by ~ⓜⓐⓢⓣⓔⓡ~ View Post
noch mal extra für dich :
WINRAR !!!! entpackt die datei die man EINZELN verändern will temporär . DENN dateien die gezipt oder sonstwas sind SIND UNBRAUCHBAR .
Ich hab dir nur etwas vorgeschlagen , du hast hier gefragt wie also beschwär dich doch nicht .
Außerdem : ändern und rein-kopieren da liegen welten dazwischen .
du hast etwas vorgeschlagen, was es nicht gibt.
und ich möchte kein winrar benutzen.
wie oben schon gesagt.

ich wollte dir nur sagen, dass dein "Vorschlag" mir bei meinem Problem einfach 0 weiter hilft..
01/18/2013 21:13 Cambios#9
Irgendwie musst du es nunmal machen.. Ich würde dir Vorschlagen das du das KOMPLETTE Archiv entpackst in Temp Ordner, dort tauscht du das Bild aus, und dann packst es halt erneut (Meta-inf ordner löschen nicht vergessen,sonst startet das java progg nit) danach.. anders gehts nicht wirklich.
01/18/2013 21:47 YatoDev#10
@Cambios
ich habe eine funktionierende lösung hier gepostet aber angeblich gibt es sowas ja nicht .
Er will weil es ihm zulange dauert nicht das ganze arschiv entpacken .

Am besten geht der TE aus der autoit section rein in die .net section und bastelt sich da was.
01/18/2013 21:54 Cambios#11
Ich frage mich sowieso weshalb der TE sowas braucht, es gibt doch bereits Mod-Patcher dennen du ne Datei von deinem Mod "in die Hand drückst" und er patcht es dann ins minecraft.jar.. wo ist das problem?
01/18/2013 21:58 v1Dr333s#12
Quote:
Originally Posted by Cambios View Post
Irgendwie musst du es nunmal machen.. Ich würde dir Vorschlagen das du das KOMPLETTE Archiv entpackst in Temp Ordner, dort tauscht du das Bild aus, und dann packst es halt erneut (Meta-inf ordner löschen nicht vergessen,sonst startet das java progg nit) danach.. anders gehts nicht wirklich.
genau das tu ich, beim packen stürtzt das programm wie im thread steht ab..

ich muss keine ordner löschen, da ich keine mods einfüge, wie kommst du darauf ?
ich möchte einen Texture-Changer programmieren, seit der 13w02a liegen alle textures einzeln als bilder in textures\blocks\.
01/18/2013 22:27 Cambios#13
Quote:
Originally Posted by v1Dr333s View Post
genau das tu ich, beim packen stürtzt das programm wie im thread steht ab..

ich muss keine ordner löschen, da ich keine mods einfüge, wie kommst du darauf ?
ich möchte einen Texture-Changer programmieren, seit der 13w02a liegen alle textures einzeln als bilder in textures\blocks\.
Es gibt auch "Mod Patcher" die dann die Bilder ersetzen können von den Texturen z.b, aber da du ja selbst was basteln willst gut.
01/19/2013 03:13 v1Dr333s#14
problem ist nocht nicht gelöst..
01/19/2013 13:23 YatoDev#15
dann speicher alle dateien die du ersetzen willst als datei.endung in einer ini . kopiere diese dateien in die jar datei . wo is das problem ??