The DotNetZip Library is great free file-compression library that you can use with your own applications or script. Used with Pervasive's EZScript, you can add zipping and unzipping functionality to any Data Integrator process.
To use the library I had to first install .Net Framework 3.5.1 Feature on our Windows Server 2008 R2 that hosts Pervasive Data Integrator. Next, I downloaded the DotNetZipUtils-v1.9.msi to install the runtime DLL. Finally, I used this excellent PowerShell script written by "Fred" that I lifted from here to install the Ionic.Zip.dll into the Global Assembly Cache.
I've included a couple of functions below to get you started with using file compression in EZScript.
ZIP function:
Function ZipFile(fileName, zipFileName, password)
Dim oZipFile As Object
Dim fileNames(), i
ReDim fileNames(UBound(Split(fileName, ";")))
fileNames = Split(fileName, ";")
Set oZipFile = CreateObject("Ionic.Zip.ZipFile")
'"using AES256 encryption...")
'oZipFile.Encryption = 3
' same password all items
If Len(password) <> 0 Then
oZipFile.Password = password
End If
For i = 0 To UBound(fileNames)
'oZipFile.AddItem(fileName)
oZipFile.AddItem_2(Trim(fileNames(i)), "")
Next
oZipFile.Name = zipFileName
LogMessage("INFO", "Zipping file: " & zipFilename)
oZipFile.Save()
LogMessage("INFO", "File zipped: " & zipFilename)
oZipFile.Dispose()
Set oZipFile = Nothing
End Function
Unzip function:
' ExtractExistingFileAction: 0= Throw; 1= OverwriteSilently; 2=DoNotOverwrite
Function UnZipFile(zipFileName, password, unZipDirectory, ExtractExistingFileAction)
Dim oZipFile As Object
Set oZipFile = CreateObject("Ionic.Zip.ZipFile")
'"using AES256 encryption...")
'oZipFile.Encryption = 3
oZipFile.Initialize(zipFileName)
' same password all items
If Len(password) <> 0 Then
oZipFile.Password = password
End If
oZipFile.ExtractAll_2(unZipDirectory, ExtractExistingFileAction)
LogMessage("INFO", "Files extracted to " & unZipDirectory)
oZipFile.Dispose()
Set oZipFile = Nothing
End Function
And an example of how to call the functions:
Option Explicit
Dim zipFileName, password
' an example of zipping multiple files
ZipFile("\\fileshare\myFolder\myAccessFile.mdb;\\fileshare\myFolder\myTextFile.txt", _
"\\fileshare\myFolder\myFile.zip", "Super Secret Password")
Dim unZipDirectory, overwriteAction
zipFileName = "\\fileshare\myFolder\myZippedFile.zip"
password = ""
unZipDirectory = "\\fileshare\myFolder\tmpZIP\"
' overwriteAction: 0=throw error; 1=overwrite silently; 2=do not overwrite
overwriteAction = 1
UnZipFile(zipFileName, password, unZipDirectory, overwriteAction)
Hopefully these examples can help you get started with an easy-to-use file compression (and decompression) in your Pervasive Data Integrator processes.
No comments:
Post a Comment