Code: Select all
Procedure.i CreateDirectoryEx(DirectoryName.s, FileAttribute = #PB_Default)
Protected i, c, tmp.s
If Right(DirectoryName, 1) = #PS$
DirectoryName = Left(DirectoryName, Len(DirectoryName) -1)
EndIf
c = CountString(DirectoryName, #PS$) + 1
For i = 1 To c
tmp + StringField(DirectoryName, i, #PS$)
If FileSize(tmp) <> -2
CreateDirectory(tmp)
EndIf
tmp + #PS$
Next
If FileAttribute <> #PB_Default
SetFileAttributes_(DirectoryName, FileAttribute)
EndIf
If FileSize(DirectoryName) = -2
ProcedureReturn #True
EndIf
EndProcedure
UseLZMAPacker()
Define ID, DestinationPath.s, Archive.s, File.s
Archive = "pathandfile.7z"
DestinationPath = "PathTo"
ID = OpenPack(#PB_Any, Archive, #PB_PackerPlugin_Lzma)
If ID
If ExaminePack(ID)
While NextPackEntry(ID)
File = DestinationPath + PackEntryName(ID)
CreateDirectoryEx(GetPathPart(File))
UncompressPackFile(ID, File)
Wend
EndIf
ClosePack(ID)
EndIf