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."
  }
}