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
[K]DEFINE CLASS[/K] zipEvents [K]AS SESSION OLEPUBLIC[/K]
[K]IMPLEMENTS[/K] _IChilkatZipEvents [K]IN[/K] "Chilkat.Zip"
[K]PROCEDURE[/K] _IChilkatZipEvents_AbortCheck(abort [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_AddFilesBegin
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_AddFilesEnd
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_BinaryData(data [K]As[/K] [K]Variant[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_DirToBeAdded(path [K]As[/K] [K]String[/K], nSkip [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_FileAdded(path [K]As[/K] [K]String[/K], fileSize [K]As[/K] [K]Number[/K], abort [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_FileUnzipped(path [K]As[/K] [K]String[/K], compressedSize [K]As[/K] [K]Number[/K], fileSize [K]As[/K] [K]Number[/K], abort [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_FileZipped(path [K]As[/K] [K]String[/K], fileSize [K]As[/K] [K]Number[/K], compressedSize [K]As[/K] [K]Number[/K], abort [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_PercentDone(pctDone [K]As[/K] [K]Number[/K], abort [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
? "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
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_ProgressInfo(name [K]As[/K] [K]String[/K], value [K]As[/K] [K]String[/K])
[C]* Application code goes here...[/C]
? name + ": " + value
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_SkippedForUnzip(path [K]As[/K] [K]String[/K], compressedSize [K]As[/K] [K]Number[/K], fileSize [K]As[/K] [K]Number[/K], isDirectory [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_TaskCompleted(task [K]As[/K] [K]Generic[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_TextData(data [K]As[/K] [K]String[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_ToBeAdded(path [K]As[/K] [K]String[/K], fileSize [K]As[/K] [K]Number[/K], nSkip [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_ToBeUnzipped(path [K]As[/K] [K]String[/K], compressedSize [K]As[/K] [K]Number[/K], fileSize [K]As[/K] [K]Number[/K], nSkip [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_ToBeZipped(path [K]As[/K] [K]String[/K], fileSize [K]As[/K] [K]Number[/K], nSkip [K]As[/K] [K]Number[/K])
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_UnzipBegin
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_UnzipEnd
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_WriteZipBegin
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]PROCEDURE[/K] _IChilkatZipEvents_WriteZipEnd
[C]* Application code goes here...[/C]
[K]ENDPROC[/K]
[K]ENDDEFINE[/K]