# Creating a .sis file

Once you have created a GCCE UREL release build of an example application, you need to create a Symbian Installation `.sis` file out of it. A `.sis` file is, in essence, a file that compresses the files (such as, `.dll`, `.exe`, `.rss`) included in an application and lists all the needed information (such as language, unique application ID) that the real device needs when receiving an application.

S60 includes mandatory `.sis` file signing, which means that all `.sis` files must be signed before installing them to the device. The type of certificate needed for an application depends on the capabilities it uses. The following table explains the different kinds of certificates needed:

Signing with | Used when
--- | ---
Self Signed Certificate | When an application requires no capabilities or utilizes APIs, which are open to all. This can be used when testing an application in one’s own device or when shipping the application. Note: The application is regarded as Untrusted if signed with the Self Signed Certificate. This process is recommended for freeware applications using unrestricted capabilities. See Signing a .sis file for instructions on how to sign a .sis with a Self Signed certificate.
Developer Certificate | When testing the application in developer’s own device(s). This certificate is acquired from Symbian. The Symbian Developer Certificate can be used by developers to sign their applications in order to obtain the restricted capabilities for device testing. The certificate is restricted to a certain set of IMEIs and the set cannot be changed. There are a few requirements to get a Symbian Developer Certificate. More information on Symbian Signed is available from the Symbian Developer website.
Symbian Signed | Mandatory if the application is using capabilities beyond the scope of APIs open to all and the application is shipped. More information on Symbian Signed is available from the Symbian Signed website.

As the example applications do not require restricted capabilities, you can use the Self Signed certificate to sign them. The necessary steps for creating and using a Self Signed certificate are explained in Creating a Private Key and Self-Signed Certificate:

Creating a Private Key and Self-Signed Certificate

The makekeys tool can be used to create private key and Self-Signed certificate. The usage of the tool is described below:

    makekeys -cert [-password <password>] [-len <key-length>] -dname <distinguised-name-string> <private-key-file> <public-key-cert>makekeys -cert [-password <password>] -dname <distinguised-name-string> <private-key-file> <public-key-cert> <cert-request-file>makekeys -view <certificate-file>

An example of creating a privatekey `mykey.key` and self-signed certificate `mycert.dat` is presented below:

    makekeys -cert -password yourpassword -len 2048 -dname "CN=Test User  OU=Development OR=Company  CO=FI EM=test@company.com" mykey.key mycert.cer

Once you have acquired the needed certificate, you can create the `.sis` file, which you then need to sign.

### Creating a .sis file

Once you have acquired the needed certificate to sign your application, you can create the `.sis` file. The `.sis` file is made from the `.pkg` file of the application, which is located in the example application's `sis` folder.

The `.pkg` file looks like this:

    Languages

    &EN

    ;Header

    #{"HelloWorldBasic"}, (0x11111111), 1, 2, 3,TYPE=SA

    ; Localized Vendor name

    %{"Vendor_EN"}

    ; Unique Vendor Name

    :"Unique Vendor Name"

    ;File to install

    "\epoc32\release\gcce\urel\helloworldbasic.exe"

    -"!:\sys\bin\helloworldbasic.exe";

    ;Supports Series 60 v 3.0

    [0x101F7961], 0, 0, 0, {"S60ProductID"}

Note: The binaries are located in the `\sys\bin` directory.

1. Open the command prompt in the folder where the `HelloWorldBasic.pkg` file is located:

   `<S60_SDK_installation_directory>\S60CppExamples\helloworldbasic\sis`

2. In the same directory, enter the `makesis` command and press Enter:

   `<S60_SDK_installation_directory>\S60CppExamples\helloworldbasic\sis> makesis helloworldbasic.pkg`

The `helloworldbasic.SIS` file is created into the same directory where the `.pkg` file is located, that is:

`<S60_SDK_installation_directory>\S60CppExamples\helloworldbasic\sis\helloworldbasic.SIS`

Next, you need to sign the .sis file.