MarcusH
10 months agoContributor III
Unzip Application zip file
I am trying to save the XML files in the application zip file as separate XML files rather than a single zip. I get the zip file as a byte array and then pass that to XFZip.Unzip
The code executes without an error and without any files being saved as well. Does anyone have any suggestions or can point out where I am going wrong with the code?
OnPrem V7.4.2
Dim xmlOptions As New XmlExtractOptions
xmlOptions.ExtractAllItems = True
Dim folderNameForExtract As String = "XMLs"
Dim extractPath As String = $"{Environment.GetEnvironmentVariable ("Temp")}\{folderNameForExtract}\"
'Execute the Metadata Extract
Using dbConnFW As DBConnInfo = BRAPi.Database.CreateFrameworkDbConnInfo(si)
Using dbConnApp As DBConnInfo = BRAPi.Database.CreateApplicationDbConnInfo(si)
Dim zippedBytes As Byte() = ApplicationZipFileHelper.Extract(dbConnFW, dbConnApp, Nothing, xmlOptions)
XFZip.Unzip(zippedBytes, extractPath)
End Using
End Using
Hi MarcusH
You can (also) use the System.IO.Compression namespace here to ExtractToDirectory. If you extract your zip file from a source directory e.g rather than from bytes(). Below is some sample code that achieves the same effect.
EDIT: just read your follow up comment. Sounds like you already know this 🙂
'' Imports the namespace 'Imports System.IO.Compression ' Get File Path (FileShare) Dim configSettings As AppServerConfigSettings = AppServerConfig.GetSettings(si) Dim fullPath As String = Path.Combine(FileShareFolderHelper.GetGroupsFolderForApp(si, True, configSettings.FileShareRootFolder, si.AppToken.AppName), "Administrators") ' The path of the zip file to decompress Dim zipPath As String = String.Format("{0}\archive.zip", fullPath) ' The path of the directory to extract the files to Dim extractPath As String = String.Format("{0}\extract", fullPath) If Not Directory.Exists(fullPath) Then Directory.CreateDirectory(fullPath) ' Extracts all the files from the zip file to the directory ZipFile.ExtractToDirectory(zipPath, extractPath)