DataFlex
DataFlex
Creates an AES Encrypted Zip with One File Unencrypted
See more Zip Examples
Demonstrates how to create an AES encrypted zip, but also containing one file that is not encrypted. The way we do it is to first create an AES encrypted zip in the usual way, and then we append an unecrypted file to it.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoZip
Variant vSaExclusions
Handle hoSaExclusions
Boolean iRecurse
Boolean iSaveExtraPath
String sTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatZip)) To hoZip
If (Not(IsComObjectCreated(hoZip))) Begin
Send CreateComObject of hoZip
End
Get ComNewZip Of hoZip "qa_output/aes_with_one_unencrypted.zip" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// Set properties to indicate that the Zip should be
// AES encrypted.
// A value of 4 indicates WinZip compatible AES encryption.
Set ComEncryption Of hoZip To 4
// Key length can be 128, 192, or 256 bits.
Set ComEncryptKeyLength Of hoZip To 128
// Set the password for AES encryption:
Set ComEncryptPassword Of hoZip To "myPassword"
// Exclude the file helloWorld.txt
// This file will be added unencrypted to the .zip
Get Create (RefClass(cComCkStringArray)) To hoSaExclusions
If (Not(IsComObjectCreated(hoSaExclusions))) Begin
Send CreateComObject of hoSaExclusions
End
Get ComAppend Of hoSaExclusions "helloWorld.txt" To iSuccess
Get pvComObject of hoSaExclusions to vSaExclusions
Send ComSetExclusions To hoZip vSaExclusions
Set ComVerboseLogging Of hoZip To True
// Add a directory tree to be zipped.
Move True To iRecurse
// Append from a directory relative to our current working directory.
Set ComAppendFromDir Of hoZip To "qa_data/filesToZip"
Get ComAppendFiles Of hoZip "*" iRecurse To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
// Writes qa_output/aes_with_one_unencrypted.zip
Get ComWriteZipAndClose Of hoZip To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// ----------------------------------------------
// At this point, we have an encrypted .zip with all
// files except for helloWorld.txt.
// We'll add helloWorld.txt (unencrypted) to the .zip we just created.
// The NewZip method only initializes the Zip object -- it does
// not create or write a .zip file.
Get ComNewZip Of hoZip "notUsed.zip" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
Send ComClear To hoSaExclusions
Get pvComObject of hoSaExclusions to vSaExclusions
Send ComSetExclusions To hoZip vSaExclusions
// No encryption.
Set ComEncryption Of hoZip To 0
Set ComAppendFromDir Of hoZip To "qa_data/filesToZip"
// Add a reference to a file. This is the file that will
// be added to a already-existing .zip.
Move False To iSaveExtraPath
Get ComAddFile Of hoZip "helloWorld.txt" iSaveExtraPath To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
// Appends the contents of the zip object to the preExisting.zip
// zip archive. preExisting.zip is opened, and the files
// referenced by this zip object are streamed in, compressed,
// and appended to the end of the archive.
Get ComQuickAppend Of hoZip "qa_output/aes_with_one_unencrypted.zip" To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoZip To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "Success!"
End_Procedure