C
C
Create Self-Extracting Executable (Windows-only)
Demonstrates how to create a Windows self-extracting EXE.Chilkat C Downloads
#include <C_CkZip.h>
BOOL zip_AbortCheck()
{
return FALSE;
}
BOOL zip_PercentDone(int percentDone)
{
printf("Percent Done: %d\n",percentDone);
// Explicitly abort at 25% or greater.
// Remove this to allow for the HTTP download to run to completion.
if (percentDone > 25) {
return TRUE;
}
return FALSE;
}
void zip_ProgressInfo(const char *name, const char *value)
{
printf("%s: %s\n",name,value);
}
void ChilkatSample(void)
{
BOOL success;
HCkZip zip;
BOOL (*fnzipAbortCheck)() = zip_AbortCheck;
BOOL (*fnzipPercentDone)(int percentDone) = zip_PercentDone;
void (*fnzipProgressInfo)(const char *name, const char *value) = zip_ProgressInfo;
BOOL recurse;
success = FALSE;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
zip = CkZip_Create();
CkZip_setAbortCheck(zip, fnzipAbortCheck);
CkZip_setPercentDone(zip, fnzipPercentDone);
CkZip_setProgressInfo(zip, fnzipProgressInfo);
// 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.
success = CkZip_NewZip(zip,"notUsed.zip");
if (success != TRUE) {
printf("%s\n",CkZip_lastErrorText(zip));
CkZip_Dispose(zip);
return;
}
// 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.
recurse = TRUE;
CkZip_AppendFiles(zip,"c:/temp/a/*",recurse);
// Write "sfx.exe"
success = CkZip_WriteExe(zip,"c:/temp/sfx.exe");
if (success != TRUE) {
printf("%s\n",CkZip_lastErrorText(zip));
CkZip_Dispose(zip);
return;
}
CkZip_Dispose(zip);
}