Visual FoxPro
Visual FoxPro
Create Self-Extracting Executable (Windows-only)
Demonstrates how to create a Windows self-extracting EXE.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loZip
LOCAL lnRecurse
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
loZip = CreateObject('Chilkat.Zip')
zipEventHandler = CreateObject("zipEvents")
EventHandler(loZip,zipEventHandler)
* Initialize the zip object. Because we're creating
* a self-extracting EXE in this example, the filename
* passed to NewZip will never actually be created.
lnSuccess = loZip.NewZip("notUsed.zip")
IF (lnSuccess <> 1) THEN
? loZip.LastErrorText
RELEASE loZip
CANCEL
ENDIF
* Append a directory tree. The AppendFiles does
* not read the file contents or append them to the zip
* object in memory. It simply appends references
* to the files so that when WriteExe (or WriteZipAndClose,
* or WriteZip, etc.) is called, the files are compressed
* and added to the archive.
lnRecurse = 1
loZip.AppendFiles("c:/temp/a/*",lnRecurse)
* Write "sfx.exe"
lnSuccess = loZip.WriteExe("c:/temp/sfx.exe")
IF (lnSuccess <> 1) THEN
? loZip.LastErrorText
RELEASE loZip
CANCEL
ENDIF
RELEASE loZip
DEFINE CLASS zipEvents AS SESSION OLEPUBLIC
IMPLEMENTS _IChilkatZipEvents IN "Chilkat.Zip"
PROCEDURE _IChilkatZipEvents_AbortCheck(abort As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_AddFilesBegin
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_AddFilesEnd
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_BinaryData(data As Variant)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_DirToBeAdded(path As String, nSkip As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_FileAdded(path As String, fileSize As Number, abort As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_FileUnzipped(path As String, compressedSize As Number, fileSize As Number, abort As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_FileZipped(path As String, fileSize As Number, compressedSize As Number, abort As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_PercentDone(pctDone As Number, abort As Number)
* Application code goes here...
? "Percent Done: " + STR(pctDone)
* Explicitly abort at 25% or greater.
* Remove this to allow for the HTTP download to run to completion.
IF (pctDone > 25) THEN
abort = 1
ENDIF
ENDPROC
PROCEDURE _IChilkatZipEvents_ProgressInfo(name As String, value As String)
* Application code goes here...
? name + ": " + value
ENDPROC
PROCEDURE _IChilkatZipEvents_SkippedForUnzip(path As String, compressedSize As Number, fileSize As Number, isDirectory As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_TaskCompleted(task As Generic)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_TextData(data As String)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_ToBeAdded(path As String, fileSize As Number, nSkip As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_ToBeUnzipped(path As String, compressedSize As Number, fileSize As Number, nSkip As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_ToBeZipped(path As String, fileSize As Number, nSkip As Number)
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_UnzipBegin
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_UnzipEnd
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_WriteZipBegin
* Application code goes here...
ENDPROC
PROCEDURE _IChilkatZipEvents_WriteZipEnd
* Application code goes here...
ENDPROC
ENDDEFINE