Sample code for 30+ languages & platforms
Android™

Create Self-Extracting Executable (Windows-only)

Demonstrates how to create a Windows self-extracting EXE.

Chilkat Android™ Downloads

Android™
// Important: Don't forget to include the call to System.loadLibrary
// as shown at the bottom of this code sample.
package com.test;

import android.app.Activity;
import com.chilkatsoft.*;

import android.widget.TextView;
import android.os.Bundle;

public class zipProgress extends CkZipProgress
  {

  public boolean AbortCheck()
    {
    boolean abort = false;
    // Application code goes here.
    // Return true to abort, false to continue.
    return abort;
    }

  public boolean PercentDone(int percentDone)
    {
    boolean abort = false;
    Log.i(TAG, "Percent Done: " + String.valueOf(percentDone));
    // Explicitly abort at 25% or greater.
    // Remove this to allow for the HTTP download to run to completion.
    if (percentDone > 25) {
        abort = true;
        }
    // Return true to abort, false to continue.
    return abort;
    }

  public void ProgressInfo(String name, String value)
    {
    Log.i(TAG, name + ": " + value);
    return;
    }

};

public class SimpleActivity extends Activity {

  private static final String TAG = "Chilkat";

  // Called when the activity is first created.
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    boolean success = false;

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    CkZip zip = new CkZip();
    zipProgress zip_progress = new zipProgress();
    zip.put_EventCallbackObject(zip_progress);

    // 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 = zip.NewZip("notUsed.zip");
    if (success != true) {
        Log.i(TAG, zip.lastErrorText());
        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.
    boolean recurse = true;
    zip.AppendFiles("c:/temp/a/*",recurse);

    // Write "sfx.exe"
    success = zip.WriteExe("c:/temp/sfx.exe");
    if (success != true) {
        Log.i(TAG, zip.lastErrorText());
        return;
        }


  }

  static {
      System.loadLibrary("chilkat");

      // Note: If the incorrect library name is passed to System.loadLibrary,
      // then you will see the following error message at application startup:
      //"The application <your-application-name> has stopped unexpectedly. Please try again."
  }
}