.jar entpacken failt

  • Ich möchte mit Hilfe dieser ZIP UDF eine .jar entpacken.
    Geht mit Winrar z. B. auch.
    Zuerst nenn ich sie zu ".zip" um, und entpacke sie dann.
    Ein kleiner Teil wird kopiert, und dann erhalt ich error 7 - Failed to extract file(s).
    Woran liegt das ?
    Hab es auch schon mit ner anderen UDF probiert, da krieg ich dann zwar kein Error, er entpackt trotzdem nur einen Teil.
    Script:

    Spoiler anzeigen
    [autoit]

    Func _change()
    If(((StringInStr(GUICtrlRead($input1),".png") <> 0) And (StringInStr(GUICtrlRead($combo1),".png") <> 0)) Or ((StringInStr(GUICtrlRead($input1),".txt") <> 0) And (StringInStr(GUICtrlRead($combo1),".txt") <> 0))) Then
    If Not FileExists($ordner&"\temp") Then DirCreate($ordner&"\temp")
    FileCopy(@AppDataDir&"\.minecraft\bin\minecraft.jar",$ordner&"\minecraft.zip",1)
    ;MsgBox(0,"","copy "&@error)
    _Zip_DeleteItem($ordner&"\minecraft.zip", $sFileName)
    MsgBox(0,"","deleteitem: "&@error)
    _Zip_AddItem($ordner&"\minecraft.zip", GUICtrlRead($input1), "\textures\blocks\"&guictrlread($combo1), 1)
    MsgBox(0,"","additem: "&@error)
    FileMove($ordner&"\minecraft.zip",@AppDataDir&"\.minecraft\bin\minecraft.jar",1)
    MsgBox(0,"","filemove: "&@error)
    Endfunc

    [/autoit]

    Ich möchte in der Minecraft.jar eine .png oder .txt durch eine andere Datein mit der gleichen Endung ersetzen.
    "guictrlread($combo1)" ist der Name der zu ersetzende Datei. (z.B. "dirt.png")
    "guictrlread($input1)" ist der Pfad zur neuen .png oder .txt.

    Einmal editiert, zuletzt von v1Dr333s (17. Januar 2013 um 21:14)

  • Huhu
    Ich hab ein ähnliches Anliegen.
    Also eigentlich möchte ich Dateien in eine minecraft.jar einfügen.
    Wenn ich dies tue und die Dateien schon vorhanden sind, bekomm ich für jede Datei eine Bestätigungsfrage.
    Dies ist aber unschön bei vielen Dateien.
    Dann dachte ich entpackste die minecraft.jar und alle anderen Dateien in einem Ordner und packst es wieder.
    Pustekuchen. Wenn ich die minecraft.jar entpacke, macht er das nur zum Teil. Ich benutze auch die zip UDF.
    Ich benenne sie manuell in minecraft.zip um, weil er es sonst nicht macht.

    Spoiler anzeigen
    [autoit]


    #include <zip.au3>
    $test = _Zip_UnzipAll(@ScriptDir & "\minecraft.zip", @ScriptDir & "\Testjar\")
    MsgBox(0,@error, $test)

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _Zip_UnzipAll()
    ; Description: Extract all files contained in a ZIP Archieve.
    ; Parameter(s): $hZipFile - Complete path to zip file that will be created (or handle if existant)
    ; $hDestPath - Complete path to where the files will be extracted
    ; $flag = 1
    ; - 1 no progress box
    ; - 0 progress box
    ; Requirement(s): none.
    ; Return Value(s): On Success - 0
    ; On Failure - sets @error 1~3
    ; @error = 1 no Zip file
    ; @error = 2 no dll
    ; @error = 3 dll isn't registered
    ; Author(s): torels_
    ; Notes: The return values will be given once the extracting process is ultimated... it takes some time with big files
    ;
    ;===============================================================================
    Func _Zip_UnzipAll($hZipFile, $hDestPath, $flag = 1)
    Local $DLLChk = _Zip_DllChk()
    If $DLLChk <> 0 Then Return SetError($DLLChk, 0, 0);no dll
    If not _IsFullPath($hZipFile) then Return SetError(4,0) ;zip file isn't a full path
    If Not FileExists($hZipFile) Then Return SetError(2, 0, 0) ;no zip file
    If Not FileExists($hDestPath) Then DirCreate($hDestPath)
    Local $aArray[1]
    $oApp = ObjCreate("Shell.Application")
    $oApp.Namespace($hDestPath).CopyHere($oApp.Namespace($hZipFile).Items())
    For $item In $oApp.Namespace($hZipFile).Items
    _ArrayAdd($aArray, $item)
    Next
    While 1
    If $flag = 1 then _Hide()
    If FileExists($hDestPath & "\" & $aArray[UBound($aArray) - 1]) Then
    ;~ Return SetError(0, 0, 1)
    ;~ ExitLoop
    EndIf
    Sleep(500)
    WEnd
    EndFunc ;==>_Zip_UnzipAll

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • nein bei mir geht es nicht um texturepacks sondern um Mods was auch ganz legal ist.
    Forgemodloder muss man in die minecraft.jar einbauen damit andere mods geladen werden ;)
    Ich habe einen server für Freunde aufgebaut und wollte nen Updater schreiben falls ich auf dem Server neue Mods habe.
    Der Updater funzt auch gut nur halt das mit dem reinpacken lasse ich momentan vom benutzer selbst machen.
    Das ist aber keine gute Lösung :(

  • Du kannst es ja auch ohne Installation dazu geben ;) Mit der 7zip-32.dll, glaub ich

    Da es hier doch einige falsch machen:

    Zitat von einem User dieses Forums

    Die Standard-Standart eines Flamingos ist einbeinig. ;)