Seite 1 von 1

xbzlip und Unterverzeichnisse

Verfasst: Di, 24. Nov 2015 11:21
von Rudolf
Hallo,
wenn ich mit xbzlip ein Archiv entpacke, werden bei mir die Unterverzeichnisse nicht angelegt, ich bekomme nur eine Fehlermeldung im Logfile dass der Pfad nicht vorhanden ist, z.B.

2015-11-24 10:47:40.87> Error while Saving File "\uniflex\sysupdate\install\rep\artums1.fr3":
Error Code: 3 -- Das System kann den angegebenen Pfad nicht finden.!

Das ist meine Funktion zum entpacken:

Code: Alles auswählen

static function ExtractFromArchive(cArc,cDir)
******************************************************************
LOCAL oZip := XbZLibZip():New(),lSubD := .t.,cFSpec := "*.*",cRepl := "N"
LOCAL nOvr := XBZ_OVERWRITE_OLDER
     oZip:Log:Open(left(cArc, At('.zip', lower(cArc))) + 'log')
     if left(upper(cRepl), 1) == 'A'
          nOvr := XBZ_OVERWRITE_ALL
     elseif left(upper(cRepl), 1) == 'N'
          nOvr := XBZ_OVERWRITE_NEVER
     endif
     oZip:SetDisplayObject(SetAppWindow())
     oZip:Open(cArc, XBZ_OPEN_READ)
     if oZip:IsOpen()
          oZip:Extract(cDir, cFSpec, lSubD, nOvr)
     endif
     oZip:Close()
return .t.

Sehe keinen Fehler darin. Es werden nur die Files im root Verzeichnis des Archivs entpackt, keine Unterverzeichnisse angelegt.
Grüße
Rudolf

Re: xbzlip und Unterverzeichnisse

Verfasst: Di, 24. Nov 2015 11:49
von Martin Altmann
Moin Rudolf,
die Parameter cFSpec und lSubD lasse ich weg - funzt. (also cDir, , , nOvr)
Allerdings vermute ich mal, dass Du das Zip falsch erstellt hast - Du musst auch die Verzeichnisnamen einpacken - mittels AddFile!:

Code: Alles auswählen

		cPath     := upper( CurDrive() ) + ':' + left( datenpfad, len( datenpfad ) - 1 )
		cZipFile  := upper( CurDrive() ) + ':' + archiv + "\" + katname + ".zip"
		if file( cZipFile )
			delete file ( cZipFile )
		endif
		oZip := XbZLibZip():New()
		oZip:SetDisplayObject( ::Static1 )
		oZip:Open( cZipFile, XBZ_OPEN_CREATE, XBZ_BEST_COMPRESSION )
		oZip:AddFile( cPath )
		oZip:AddFile( upper( CurDrive() ) + ':' + textpfad + "\" + katname )
		if ::lPDF .and. File( vordruckpfad + katname, "D" )
			oZip:AddFile( vordruckpfad + katname )
		endif
		if l2s .and. File( cPath + "\TAG2", "D" )
			oZip:AddFile( cPath + "\TAG2" )
		endif
		if l2s .and. File( upper( CurDrive() ) + ':' + textpfad + "\" + katname + "\TAG2", "D" )
			oZip:AddFile( upper( CurDrive() ) + ':' + textpfad + "\" + katname + "\TAG2" )
		endif
		oZip:AddDir( "*.dbf", cPath, , .f., .t., .f. )
		if l2s .and. File( cPath + "\TAG2", "D" )
			oZip:AddDir( "*.dbf", cPath + "\TAG2", , .f., .t., .f. )
		endif
		if ::lPDF .and. File( vordruckpfad + katname, "D" )
			oZip:AddDir( "*.pdf", upper( CurDrive() ) + ':' + vordruckpfad + katname, , .f., .t., .f. )
		endif
		oZip:AddDir( "*.txt", upper( CurDrive() ) + ':' + textpfad + "\" + katname, , .f., .t., .f. )
		oZip:AddDir( "*.rtf", upper( CurDrive() ) + ':' + textpfad + "\" + katname, , .f., .t., .f. )
		oZip:AddDir( "*.csv", upper( CurDrive() ) + ':' + textpfad + "\" + katname, , .f., .t., .f. )
		if l2s .and. File( upper( CurDrive() ) + ':' + textpfad + "\" + katname + "\TAG2", "D" )
			oZip:AddDir( "*.txt", upper( CurDrive() ) + ':' + textpfad + "\" + katname + "\TAG2", , .f., .t., .f. )
			oZip:AddDir( "*.rtf", upper( CurDrive() ) + ':' + textpfad + "\" + katname + "\TAG2", , .f., .t., .f. )
			oZip:AddDir( "*.csv", upper( CurDrive() ) + ':' + textpfad + "\" + katname + "\TAG2", , .f., .t., .f. )
		endif
		oZip:Close()
Viele Grüße,
Martin

Re: xbzlip und Unterverzeichnisse

Verfasst: Di, 24. Nov 2015 12:22
von Rudolf
Hallo Martin,
danke für die Info, ich verwendet 7zip und den Parameter -r. Iin allen anderen Programmen sehen ich die Unterverzeichnisse im Zip File, sollte also passen.
z.B. "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "\install\setupfiles\formcommander\formcommander.zip" .\update\*.* -r
Werde mal ohne die anderen Parameter testen, glaube aber nicht dass diese einen Einfluss haben.
Grüße
Rudolf

Re: xbzlip und Unterverzeichnisse

Verfasst: Mi, 25. Nov 2015 8:26
von Rudolf
Hallo Martin,
hattest Recht, xbzlib kennt die Struktur nicht wenn das Archiv mit 7zip erstellt wurde, obwohl es andere Programm kennen. Wenn ich die zip Datei mit einem anderen Tool erstelle, funktioniert es. Werde 7zip ersetzen müssen.
Grüße
Rudolf

Re: xbzlip und Unterverzeichnisse

Verfasst: Mi, 25. Nov 2015 9:24
von Rudolf
Hallo,
mit
http://www.info-zip.org/Zip.html
funktioniert es problemlos, also Vorsicht mit 7Zip
Grüße
Rudolf