src/tools/py2sis/ensymble/README
changeset 0 ca70ae20a155
equal deleted inserted replaced
-1:000000000000 0:ca70ae20a155
       
     1              The Ensymble developer utilities for Symbian OS
       
     2               Copyright 2006, 2007, 2008, 2009 Jussi Ylänen
       
     3            Portions Copyright (c) 2008 - 2009 Nokia Corporation
       
     4 
       
     5                          Last updated 2009-01-30
       
     6 
       
     7 
       
     8 ABOUT
       
     9 =====
       
    10 
       
    11 This is the Ensymble developer utilities for Symbian OS(TM), a
       
    12 collection of Python® modules and command line programs for Symbian OS
       
    13 [1] software development.
       
    14 
       
    15 Current focus of Ensymble development is to provide useful tools for
       
    16 making "Python for S60" [2] (also called PyS60) programs. Supported
       
    17 functions include generation of SIS (installation) packages, merging
       
    18 several SIS packages into one, (re-)signing existing SIS packages and
       
    19 modifying extension DLL headers. Support for other Symbian OS software
       
    20 development tasks will follow.
       
    21 
       
    22 A long term goal of Ensymble is to provide a cross-platform, open-source
       
    23 way to do Symbian OS software development, supporting Symbian OS
       
    24 versions 9.1 and later. The original tools by Symbian are closed source
       
    25 and only available for the Windows® operating system.
       
    26 
       
    27 Symbian OS is the operating system used by Nokia [3] in some of its
       
    28 mobile phones [4]. Other manufacturers have also licensed Symbian OS.
       
    29 Python for S60 is a port of the popular Python programming language [5]
       
    30 to a Nokia phone platform called S60® [6]. Before November 2005, S60 was
       
    31 called Series 60.
       
    32 
       
    33 
       
    34 VERSION COMPATIBILITY
       
    35 =====================
       
    36 
       
    37 Ensymble targets Symbian OS v9.1 and later. For Nokia phones, this means
       
    38 S60 3rd Edition. 1st and 2nd Edition phones are not directly supported
       
    39 by Ensymble. A program called py2sisng [7] supports 1st and 2nd Edition
       
    40 phones and can be used for a subset of tasks that Ensymble performs.
       
    41 
       
    42 The py2sis command of the Ensymble command line tool produces
       
    43 installation packages (SIS) for Python for S60 version 1.4.0 and later.
       
    44 Version 1.4.0 of Python for S60 is the first officially signed release
       
    45 from Nokia. Although packages generated with Ensymble also work with
       
    46 PyS60 from v1.3.8 upto v1.3.23, a harmless warning is generated during
       
    47 installation for a missing Python for S60 component.
       
    48 
       
    49 Ensymble is written in Python. Python v2.2 or newer is required, as
       
    50 older versions lack necessary language features. Ensymble has been
       
    51 tested on the following systems:
       
    52 
       
    53  * Debian GNU/Linux Sid (i386) with Python v2.3.5, v2.4.5 and v2.5.2
       
    54  * Red Hat Linux release 9 (i386) with Python v2.2.2
       
    55  * Red Hat Enterprise Linux AS release 3 (i386) with Python v2.2.3
       
    56  * Red Hat Enterprise Linux AS release 4 (i386) with Python v2.3.4
       
    57  * Apple OS X Tiger (G4) with Python v2.3.5
       
    58  * Apple OS X Leopard (i386) with Python v2.5
       
    59  * Microsoft Windows XP, SP2 with Python v2.5
       
    60 
       
    61 Note: Python for S60 versions 1.3.20 and older require that SIS files
       
    62 generated by Ensymble are installed into main phone memory instead of
       
    63 memory card. This bug has been corrected in version 1.3.21 of PyS60.
       
    64 
       
    65 
       
    66 INSTALLATION
       
    67 ============
       
    68 
       
    69 Care has been taken to ensure that minimum amount of extra software is
       
    70 needed to run Ensymble. A working installation of Python is required
       
    71 (see VERSION COMPATIBILITY above). In addition, the OpenSSL command line
       
    72 tool [8] is required for installation package (SIS) generation, merging
       
    73 and (re-)signing. Any recent version will do, and can usually be found
       
    74 pre-installed. For Windows, the Stunnel OpenSSL binaries [9] are
       
    75 recommended, but any other binaries will do as well.
       
    76 
       
    77 The Ensymble command line tool is normally installed as a single file
       
    78 "ensymble.py". This file contains everything except the OpenSSL command
       
    79 line tool and is created using Fredrik Lundh's nifty squeeze utility
       
    80 [10]. Pre-squeezed files for various Python versions may be downloaded
       
    81 from the Ensymble home page. To find out which version to download, type
       
    82 "python -V" on the command line:
       
    83 
       
    84     $ python -V
       
    85     Python 2.4.4
       
    86 
       
    87 or
       
    88 
       
    89     C:\> python -V
       
    90     Python 2.4.4
       
    91 
       
    92 A pre-squeezed version for Python 2.4 would be the correct one in this
       
    93 case.
       
    94 
       
    95 Users on Unix-like systems (Linux, *BSD, Apple OS X) can download the
       
    96 correct pre-squeezed version and put in in the "bin" directory under the
       
    97 user's home directory (if such a thing exists), and possibly rename the
       
    98 file to "ensymble.py" as well.
       
    99 
       
   100 Windows users need to download "openssl.zip" (NOT "stunnel-n.nn.exe" or
       
   101 "stunnel-n.nn-installer.exe") [9] and unpack it somewhere, for example
       
   102 "C:\Ensymble", and then put the correct pre-squeezed version of Ensymble
       
   103 there as well, renamed to "ensymble.py":
       
   104 
       
   105     C:\Ensymble\      [directory]
       
   106         ensymble.py   [76046 bytes]
       
   107         openssl.exe   [1153024 bytes]
       
   108         libssl32.dll  [632226 bytes]
       
   109         libeay32.dll  [1578787 bytes]
       
   110 
       
   111 To allow using the Ensymble command line tool without explicitly giving
       
   112 a full command path each time, it is advisable to add the installation
       
   113 directory ("C:\Ensymble" in the example above) in the Path environment
       
   114 variable in Windows' environment variables dialog (My Computer ->
       
   115 Properties -> Advanced -> Environment Variables -> System Variables ->
       
   116 Path). The Command Prompt window must be restarted after the change.
       
   117 
       
   118 Installation is also possible from the original source package. For
       
   119 Unix-like systems, there is a simple installation script which squeezes
       
   120 all the required files together and copies the resulting package to a
       
   121 given directory (which must exist already):
       
   122 
       
   123     $ ./install.sh ~/bin
       
   124 
       
   125 
       
   126 USAGE
       
   127 =====
       
   128 
       
   129 DESCRIPTION
       
   130 
       
   131 The Ensymble command line tool provides access to most Ensymble
       
   132 functionality:
       
   133 
       
   134     $ ensymble.py command options...
       
   135 
       
   136 , where "command" is the command to be executed and "options" are the
       
   137 command specific options. Running ensymble.py without arguments will
       
   138 list all the available commands.
       
   139 
       
   140 The following commands are currently supported by Ensymble:
       
   141 
       
   142     altere32   Alter the IDs and capabilities of e32image files (EXEs, DLLs)
       
   143     genuid     Generate a new test-range UID from a name
       
   144     infoe32    Show the IDs and capabilities of e32image files (EXEs, DLLs)
       
   145     mergesis   Merge several SIS packages into one
       
   146     py2sis     Create a SIS package for a "Python for S60" application
       
   147     signsis    Sign a SIS package
       
   148     simplesis  Create a SIS package from a directory structure
       
   149     version    Print Ensymble version
       
   150 
       
   151 Each command is documented in detail below.
       
   152 
       
   153 Note about security: When using SIS certificates, the private key of the
       
   154 certificate is saved unencrypted to a temporary file and could be
       
   155 recovered by others. This is due to compatibility with old versions of
       
   156 OpenSSL. In the future, Ensymble may require a more recent version of
       
   157 OpenSSL.
       
   158 
       
   159 
       
   160 COMMON OPTIONS
       
   161 
       
   162     --encoding=terminal,filesystem
       
   163     -e terminal,filesystem
       
   164 
       
   165 Local character encodings for terminal and filesystem. For example
       
   166 "--encoding=utf8,latin1", if the terminal is using a UTF-8 character set
       
   167 and the filesystem is still using the older latin1 (ISO-8859-1)
       
   168 character set. See [11] for a list of Python standard encodings.
       
   169 
       
   170 The encodings will be autodetected most of the time, but on some special
       
   171 environments this may not be possible, hence this option.
       
   172 
       
   173     --verbose
       
   174     -v
       
   175 
       
   176 Print extra statistics, such as file names, option summary.
       
   177 
       
   178     --help
       
   179     -h
       
   180 
       
   181 On-line help for a command can be found using this option.
       
   182 
       
   183 
       
   184 EXAMPLES
       
   185 
       
   186     $ ensymble.py
       
   187 
       
   188     Ensymble developer utilities for Symbian OS
       
   189 
       
   190     usage: ensymble.py command [command options]...
       
   191 
       
   192     Commands:
       
   193         altere32   Alter the IDs and capabilities of e32image files (EXEs, DLLs)
       
   194         genuid     Generate a new test-range UID from a name
       
   195         infoe32    Show the IDs and capabilities of e32image files (EXEs, DLLs)
       
   196         mergesis   Merge several SIS packages into one
       
   197         py2sis     Create a SIS package for a "Python for S60" application
       
   198         signsis    Sign a SIS package
       
   199         simplesis  Create a SIS package from a directory structure
       
   200         version    Print Ensymble version
       
   201 
       
   202     Use 'ensymble.py command --help' to get command specific help.
       
   203 
       
   204 When no commands and options are given, Ensymble prints a short help.
       
   205 
       
   206     $ ensymble.py version -h
       
   207 
       
   208     Ensymble developer utilities for Symbian OS
       
   209 
       
   210     usage: ensymble.py version
       
   211 
       
   212     Print Ensymble version.
       
   213 
       
   214 Each command has an on-line help. A short description of what the
       
   215 command does and a list of options are printed.
       
   216 
       
   217 
       
   218 The "altere32" command
       
   219 ----------------------
       
   220 
       
   221 SYNOPSIS
       
   222 
       
   223     $ ensymble.py altere32
       
   224         [--uid=0x01234567] [--secureid=0x01234567] [--vendorid=0x01234567]
       
   225         [--caps=Cap1+Cap2+...] [--encoding=terminal,filesystem] [--verbose]
       
   226         <infile> <outfile>
       
   227 
       
   228 or
       
   229 
       
   230     $ ensymble.py altere32
       
   231         [--uid=0x01234567] [--secureid=0x01234567] [--vendorid=0x01234567]
       
   232         [--caps=Cap1+Cap2+...] [--encoding=terminal,filesystem] [--verbose]
       
   233         --inplace <infile>...
       
   234 
       
   235 
       
   236 DESCRIPTION
       
   237 
       
   238 The "altere32" command alters the IDs and capabilities of e32image files
       
   239 (Symbian EXEs and DLLs). Extension module authors can use this command
       
   240 to quickly generate variations of extension modules without recompiling.
       
   241 
       
   242 
       
   243 PARAMETERS
       
   244 
       
   245     infile
       
   246 
       
   247 Path of the original e32image file. If option "--inplace" (see below) is
       
   248 set, there may be more than one file name present.
       
   249 
       
   250     outfile
       
   251 
       
   252 Path of the modified e32image file. Only used when not using option
       
   253 "--inplace", see below. If a directory name is given, input file name is
       
   254 used as the output file name.
       
   255 
       
   256     --inplace
       
   257     -i
       
   258 
       
   259 Allow more than one input file name, modify input files in-place.
       
   260 
       
   261 Note: Use this option with caution, as no backups of the original files
       
   262 will be made!
       
   263 
       
   264     --uid=0x01234567
       
   265     -u 0x01234567
       
   266 
       
   267 Symbian UID for the e32image. This is normally same as the secure ID,
       
   268 see below. If this option is not given, the UID is not changed.
       
   269 
       
   270     --secureid=0x01234567
       
   271     -s 0x01234567
       
   272 
       
   273 Secure ID for the e32image. This is normally same as the UID, see above.
       
   274 If this option is not given, the secure ID is not changed.
       
   275 
       
   276     --vendorid=0x01234567
       
   277     -r 0x01234567
       
   278 
       
   279 Vendor ID for the e32image. In most cases the vendor ID is 0. If this
       
   280 option is not given, the vendor ID is not changed.
       
   281 
       
   282     --caps=Cap1+Cap2+...
       
   283     -b Cap1+Cap2+...
       
   284 
       
   285 or
       
   286 
       
   287     --caps=0x12345
       
   288     -b 0x12345
       
   289 
       
   290 Capability names separated by "+" or a numeric capability bitmask. If no
       
   291 capability option is given, capabilities are not changed.
       
   292 
       
   293     --heapsize=min,max
       
   294     -H min,max
       
   295 
       
   296 Heap size limits for the e32image, only valid for EXEs. If no heap size
       
   297 option is given, the heap size limits are not changed. If only one value
       
   298 is given, it is used as both the heap minimum value and heap maximum
       
   299 value.
       
   300 
       
   301 Values may have suffix "k" or "M" (case insensitive) to denote kilobytes
       
   302 (1024 bytes) and megabytes (1048576 bytes), respectively.
       
   303 
       
   304 The heap minimum value determines if a program is allowed to start. If
       
   305 less than the set amount of memory is available, program start-up fails.
       
   306 The heap maximum value limits the memory a program can allocate. Memory
       
   307 allocations beyond the set limit will fail.
       
   308 
       
   309 
       
   310 EXAMPLES
       
   311 
       
   312 Note: The command lines below may be wrapped over multiple lines due to
       
   313 layout constraints. In reality, each of them should be contained in one
       
   314 physical command line, with no spaces around the "+" characters.
       
   315 
       
   316     $ ensymble.py altere32
       
   317         --caps=LocalServices+Location+NetworkServices+PowerMgmt+ProtServ+
       
   318         ReadUserData+SurroundingsDD+SWEvent+UserEnvironment+WriteUserData+
       
   319         ReadDeviceData+TrustedUI+WriteDeviceData
       
   320         myextension_orig.pyd myextension.pyd
       
   321 
       
   322 This will modify "myextension_orig.pyd" (a "Python for S60" extension
       
   323 DLL) with the capabilities listed, and generate file "myextension.pyd"
       
   324 with the new capabilities.
       
   325 
       
   326     $ ensymble.py altere32 --caps=0xff1b4 --inplace *.dll
       
   327 
       
   328 This modifies every DLL file in the current directory using the same
       
   329 capabilities as above but in a numeric form. Original files will be
       
   330 modified, so use the "--inplace" option with caution!
       
   331 
       
   332     $ ensymble.py altere32 --heapsize=4k,4M myapp_orig.exe myapp.exe
       
   333 
       
   334 Program "myapp.exe" is modified so that it can allocate upto four
       
   335 megabytes of memory. Heap minimum value is usually kept at the default
       
   336 four kilobytes.
       
   337 
       
   338 Note: When modifying the UID, the secure ID should be modified
       
   339 accordingly. Modifying UIDs of application EXEs is generally not
       
   340 possible, because applications usually include the UID in program code
       
   341 as well.
       
   342 
       
   343 
       
   344 The "genuid" command
       
   345 --------------------
       
   346 
       
   347 SYNOPSIS
       
   348 
       
   349     $ ensymble.py genuid
       
   350     [--encoding=terminal,filesystem] [--verbose]
       
   351     <name>...
       
   352 
       
   353 
       
   354 DESCRIPTION
       
   355 
       
   356 The "genuid" command generates a test-range UID from an application or
       
   357 extension module name. It is suggested that Ensymble-generated UIDs are
       
   358 used instead of choosing an arbitrary test-range UID, to prevent clashes
       
   359 with software from other authors.
       
   360 
       
   361 
       
   362 PARAMETERS
       
   363 
       
   364     name
       
   365 
       
   366 One or more names for which UIDs are generated. Names are
       
   367 case-insensitive and fully support the international Unicode characters.
       
   368 
       
   369 Generated UIDs are compatible with the automatic UID generation of
       
   370 py2sis and simplesis commands. The name must not contain version
       
   371 information or any file prefixes, just the name itself, e.g.
       
   372 "myextension" instead of "myextension_v1.2.3.sis".
       
   373 
       
   374 
       
   375 EXAMPLES
       
   376 
       
   377     $ ensymble.py genuid myapplication myextension
       
   378     myapplication: 0xe0942bea
       
   379     myextension: 0xe325ed58
       
   380 
       
   381 This will generate two UIDs: one for "myapplication" and another for
       
   382 "myextension".
       
   383 
       
   384 
       
   385 The "infoe32" command
       
   386 ---------------------
       
   387 
       
   388 SYNOPSIS
       
   389 
       
   390     $ ensymble.py infoe32
       
   391     [--encoding=terminal,filesystem] [--verbose]
       
   392     <infile>...
       
   393 
       
   394 
       
   395 DESCRIPTION
       
   396 
       
   397 The "infoe32" command displays information about Symbian e32image files
       
   398 (Symbian EXEs and DLLs). All three UIDs as well as the vendor ID and
       
   399 secure ID are printed. Capabilities are displayed textually and as a
       
   400 hexadecimal number.
       
   401 
       
   402 
       
   403 PARAMETERS
       
   404 
       
   405     infile
       
   406 
       
   407 One or more e32image files to inspect.
       
   408 
       
   409 
       
   410 EXAMPLES
       
   411 
       
   412     $ ensymble.py infoe32 myprogram.exe somelibrary.dll
       
   413     myprogram.exe:
       
   414         UID1          0x1000007a
       
   415         UID2          0x100039ce
       
   416         UID3          0x12345678
       
   417         Secure ID     0x12345678
       
   418         Vendor ID     0x00000000
       
   419         Capabilities  0x0 (NONE)
       
   420     somelibrary.dll:
       
   421         UID1          0x10000079
       
   422         UID2          0x00000000
       
   423         UID3          0x00000000
       
   424         Secure ID     0x00000000
       
   425         Vendor ID     0x00000000
       
   426         Capabilities  0xff7be (ALL-TCB-DRM-AllFiles)
       
   427 
       
   428 This will display information about "myprogram.exe" and
       
   429 "somelibrary.dll".
       
   430 
       
   431 
       
   432 The "mergesis" command
       
   433 ----------------------
       
   434 
       
   435 SYNOPSIS
       
   436     $ ensymble.py mergesis
       
   437         [--cert=mycert.cer] [--privkey=mykey.key] [--passphrase=12345]
       
   438         [--encoding=terminal,filesystem] [--verbose]
       
   439         <infile> [mergefile]... <outfile>
       
   440 
       
   441 
       
   442 DESCRIPTION
       
   443 
       
   444 The "mergesis" command takes a set of SIS files and inserts them as
       
   445 unconditional embedded SIS files in the first one. The resulting SIS
       
   446 package is then signed with the certificate provided. None of the
       
   447 certificates of the first SIS file are preserved.
       
   448 
       
   449 Note: The "mergesis" command will only work with SIS files that do not
       
   450 already contain other embedded SIS files.
       
   451 
       
   452 
       
   453 PARAMETERS
       
   454 
       
   455     infile
       
   456 
       
   457 Path of the base SIS file.
       
   458 
       
   459     mergefile
       
   460 
       
   461 Zero or more SIS files to embed in the base sis file.
       
   462 
       
   463     outfile
       
   464 
       
   465 Path of the resulting SIS file. If a directory name is given, base SIS
       
   466 file name is used as the output file name.
       
   467 
       
   468     --cert=mycert.cer
       
   469     -a mycert.cer
       
   470 
       
   471 Certificate to use for signing in PEM (text) format. If no certificate
       
   472 and its private key are given, Ensymble uses a default self-signed
       
   473 certificate (see option "--cert" for command "py2sis" above).
       
   474 
       
   475     --privkey=mykey.key
       
   476     -k mykey.key
       
   477 
       
   478 Private key of the certificate in PEM (text) format. If option "--cert"
       
   479 (above) is given, this option is required as well.
       
   480 
       
   481     --passphrase=12345
       
   482     -p 12345
       
   483 
       
   484 Pass phrase of the private key.
       
   485 
       
   486 Note: Using command line options to give the pass phrase is insecure.
       
   487 Any user of the computer will be able to see command lines of started
       
   488 programs and thus will see the pass phrase in plain view. Instead,
       
   489 standard input should be used (see examples below).
       
   490 
       
   491 If no pass phrase is given on the command line or standard input, it
       
   492 will be asked interactively.
       
   493 
       
   494 
       
   495 EXAMPLES
       
   496 
       
   497 Note: The command lines below may be wrapped over multiple lines due to
       
   498 layout constraints. In reality, each of them should be contained in one
       
   499 physical command line.
       
   500 
       
   501     $ ensymble.py mergesis
       
   502         --cert=mycert.cer --key=mykey.key --passphrase=12345
       
   503         myapp_v1_0_0.sis PythonForS60_1_3_17_3rdEd_selfsigned.SIS
       
   504         myapp_standalone_v1_0_0.sis
       
   505 
       
   506 A Python for S60 script "myapp_v1_0_0.sis" will be merged with Python
       
   507 runtime SIS "PythonForS60_1_3_17_3rdEd_selfsigned.SIS". A new SIS file
       
   508 "myscript_standalone_v1_0_0.sis" will be created and signed with
       
   509 "mycert.cer" using private key "mykey.key".
       
   510 
       
   511     $ echo "12345" | ensymble.py mergesis
       
   512         --cert=mycert.cer --key=mykey.key
       
   513         basefile.sis addon1.sis addon2.sis
       
   514 
       
   515 Pass phrase can be given in Ensymble standard input, so that it will not
       
   516 be visible to all users of the computer (see option "--passphrase"
       
   517 above).
       
   518 
       
   519 
       
   520 The "py2sis" command
       
   521 --------------------
       
   522 
       
   523 SYNOPSIS
       
   524 
       
   525     $ ensymble.py py2sis
       
   526         [--uid=0x01234567] [--appname=AppName] [--version=1.0.0]
       
   527         [--lang=EN,...] [--icon=icon.svg] [--shortcaption="App. Name",...]
       
   528         [--caption="Application Name",...] [--drive=C]
       
   529         [--textfile=mytext_%C.txt] [--cert=mycert.cer] [--privkey=mykey.key]
       
   530         [--passphrase=12345] [--caps=Cap1+Cap2+...]
       
   531         [--vendor="Vendor Name",...] [--autostart]
       
   532         [--encoding=terminal,filesystem] [--verbose]
       
   533         <src> [sisfile]
       
   534 
       
   535 
       
   536 DESCRIPTION
       
   537 
       
   538 The "py2sis" command is used to pack a Python for S60 application script
       
   539 and its auxiliary files (if any) into a Symbian installation package
       
   540 (SIS).
       
   541 
       
   542 
       
   543 PARAMETERS
       
   544 
       
   545     src
       
   546 
       
   547 The source script or directory name. When a directory name is given, the
       
   548 directory structure is preserved under an application specific private
       
   549 directory ("\private\<uid>\") on the phone. A file called "default.py"
       
   550 is required to exist on the root of the directory given. This will be
       
   551 the main file that starts the application. (See option "--extrasdir"
       
   552 below for more options for file placement.)
       
   553 
       
   554 When a regular file name is given, it will be located under the
       
   555 application specific private directory, with the name "default.py".
       
   556 
       
   557     sisfile
       
   558 
       
   559 Path of the SIS file to create. If a directory name is given, output
       
   560 file name is derived from input file name and application version (see
       
   561 option "--version" below). This is also the case when no SIS file name
       
   562 is given.
       
   563 
       
   564     --appname=AppName
       
   565     -n AppName
       
   566 
       
   567 Name of the application. If no application name is given, it will be
       
   568 derived from the input file name.
       
   569 
       
   570 This name is used as the base for all generated file names (EXE, icon,
       
   571 resources) on the phone. It will also be used as the default caption if
       
   572 none are given, and a temporary UID (see option "--uid" below) will be
       
   573 generated from application name if not given explicitly.
       
   574 
       
   575     --uid=0x01234567
       
   576     -u 0x01234567
       
   577 
       
   578 Symbian UID for the application. If the UID option is not given, the
       
   579 main Python file ("default.py", see parameter "src" above) will be
       
   580 scanned for a special string. If no UID can be found, a temporary UID is
       
   581 generated from the application name (see option "--appname" and command
       
   582 "genuid" above).
       
   583 
       
   584 The special UID string can appear anywhere in the main Python file,
       
   585 including comments and as part of string literals. It is of the form
       
   586 
       
   587     SYMBIAN_UID = UID
       
   588 
       
   589 , where whitespace around the equals sign is optional. UID is in the
       
   590 same format as with the command line parameter (see option "--uid"
       
   591 above).
       
   592 
       
   593 Note: Use a real UID for all applications to be distributed. The
       
   594 auto-generated test-range UID is only meant for development and testing,
       
   595 not for real applications. UIDs can be ordered from Symbian Signed [12].
       
   596 If you have already ordered UIDs for 1st or 2nd Edition phones, to use
       
   597 these UIDs in 3rd Edition phones the first hex digit (a "1") needs to be
       
   598 changed to an "f".
       
   599 
       
   600 Also note: When changing the application name (or source file /
       
   601 directory name in case no application name is explicitly given), the
       
   602 temporary UID changes and the SIS package will be considered a new
       
   603 application on the phone, unless an UID is explicitly specified.
       
   604 
       
   605     --version=1.0.0
       
   606     -r 1.0.0
       
   607 
       
   608 Application version: X.Y.Z or X,Y,Z (major, minor, build). There may be
       
   609 a "v" or "V" in front of the major number. Minor and build numbers are
       
   610 optional.
       
   611 
       
   612 If the version option is not given, the main Python file ("default.py",
       
   613 see parameter "src" above) will be scanned for a special string. If no
       
   614 version can be found, it defaults to 1.0.0.
       
   615 
       
   616 The special version string can appear anywhere in the main Python file,
       
   617 including comments and as part of string literals. It is of the form
       
   618 
       
   619     SIS_VERSION = "1.0.0"
       
   620 
       
   621 , where whitespace around the equals sign is optional. Version is in the
       
   622 same format as with the command line parameter (see option "--version"
       
   623 above), except that it may optionally be enclosed in single or double
       
   624 quotes.
       
   625 
       
   626     --lang=EN,...
       
   627     -l EN,...
       
   628 
       
   629 Comma separated list of two-character language codes. These are the
       
   630 languages that the SIS file claims to support, English by default.
       
   631 Application must then somehow determine which language was selected
       
   632 during install. Symbian installation tools reference [13] lists the
       
   633 available language codes.
       
   634 
       
   635     --icon=icon.svg
       
   636     -i icon.svg
       
   637 
       
   638 Icon file in SVG-Tiny format. If no icon is given, the Python logo is
       
   639 used as the icon. The Python logo is a trademark of the Python Software
       
   640 Foundation.
       
   641 
       
   642 Ensymble does not support the old style MBM bitmap icons.
       
   643 
       
   644     --shortcaption="App. Name",...
       
   645     -s "App. Name",...
       
   646 
       
   647     --caption="Application Name",...
       
   648     -c "Application Name",...
       
   649 
       
   650 Comma separated list of short and long captions in all selected
       
   651 languages, i.e. there must be as many comma separated captions as there
       
   652 are languages listed with the "--lang" option. If no captions are given,
       
   653 application name is used (see option "--appname" above). If only the
       
   654 short captions are given, long captions will use those instead.
       
   655 
       
   656 Captions are visible names used in various places on the phone display.
       
   657 Short caption is displayed under the application icon when using the
       
   658 grid layout. Long caption is used on top of the screen when the
       
   659 application is launched and beside the icon in list layout. Long caption
       
   660 is also used as the package name, which is displayed during application
       
   661 installation.
       
   662 
       
   663     --drive=C
       
   664     -f C
       
   665 
       
   666 Installation drive "C" or "E" or "any", to select where the SIS is to be
       
   667 installed. Default is "any", which causes the phone to ask the user
       
   668 where to install the package.
       
   669 
       
   670     --extrasdir=root
       
   671     -x root
       
   672 
       
   673 Name of "extras" directory under the application source directory. The
       
   674 extras directory contains a directory tree which is placed under the
       
   675 root of the installation drive, instead of in the application private
       
   676 directory. If no extras directory name is given, this feature is
       
   677 disabled.
       
   678 
       
   679 Option "--extrasdir" is similar to the "simplesis" command (see below).
       
   680 It allows placing files under "\sys\bin" and "\resource", for example.
       
   681 
       
   682     --textfile=mytext_%C.txt
       
   683     -t mytext_%C.txt
       
   684 
       
   685 Text file (or pattern, see below) to display during install. If none is
       
   686 given, no extra text will be displayed during install.
       
   687 
       
   688 Files to display are in UTF-8 encoding, without Byte-Order Marker (BOM).
       
   689 The file name may contain formatting characters that are substituted for
       
   690 each selected language (see option "--lang" above). If no formatting
       
   691 characters are present, the same text will be used for all languages.
       
   692 
       
   693     %%           - literal %
       
   694     %n           - language number (01 - 99)
       
   695     %c           - two-character language code in lowercase letters
       
   696     %C           - two-character language code in capital letters
       
   697     %l           - language name in English, using only lowercase letters
       
   698     %l           - language name in English, using mixed case letters
       
   699 
       
   700 For example, if there are files named "mytext_EN.txt", "mytext_GE.txt"
       
   701 and "mytext_SP.txt", a pattern of "mytext_%C.txt" will be able to use
       
   702 them.
       
   703 
       
   704     --cert=mycert.cer
       
   705     -a mycert.cer
       
   706 
       
   707 Certificate to use for signing in PEM (text) format.
       
   708 
       
   709 SIS files for Symbian OS v9 and later are required to be digitally
       
   710 signed. Unsigned packages will not install on the phone. A
       
   711 self-generated ("self-signed" in crypto parlance) certificate will do,
       
   712 but only a restricted subset of features ("capabilities", see option
       
   713 "--caps" below) are available for self-signed applications.
       
   714 
       
   715 If no certificate and its private key are given, Ensymble uses a default
       
   716 self-signed certificate. Software authors are encouraged to create their
       
   717 own unique certificates for SIS packages that are to be distributed.
       
   718 
       
   719     --privkey=mykey.key
       
   720     -k mykey.key
       
   721 
       
   722 Private key of the certificate in PEM (text) format. If option "--cert"
       
   723 (above) is given, this option is required as well.
       
   724 
       
   725     --passphrase=12345
       
   726     -p 12345
       
   727 
       
   728 Pass phrase of the private key.
       
   729 
       
   730 Note: Using command line options to give the pass phrase is insecure.
       
   731 Any user of the computer will be able to see command lines of started
       
   732 programs and thus will see the pass phrase in plain view. Instead,
       
   733 standard input should be used (see examples below).
       
   734 
       
   735 If no pass phrase is given on the command line or standard input, it
       
   736 will be asked interactively.
       
   737 
       
   738     --caps=Cap1+Cap2+...
       
   739     -b Cap1+Cap2+...
       
   740 
       
   741 or
       
   742 
       
   743     --caps=0x12345
       
   744     -b 0x12345
       
   745 
       
   746 Capability names separated by "+" or a numeric capability bitmask. If no
       
   747 capability option is given, the capabilities : LocalServices, NetworkServices,
       
   748 ReadUserData, WriteUserData and UserEnvironment are granted by default. 
       
   749 Symbian Signed [12] has an FAQ which explains all the available capabilities.
       
   750 
       
   751     --vendor=Name,...
       
   752     -d Name,...
       
   753 
       
   754 Comma separated list of vendor names in all selected languages, i.e.
       
   755 there must be as many comma separated vendor names as there are
       
   756 languages listed with the "--lang" option. Alternatively, if only one
       
   757 vendor name is given, it will be used for all languages. If no vendor
       
   758 names are given then "Ensymble" will be used.
       
   759 
       
   760 Vendor name is visible during installation and on the Application
       
   761 manager, except when using self-signed certificates (see option "--cert"
       
   762 above).
       
   763 
       
   764     --autostart
       
   765     -g
       
   766 
       
   767 Flag to control automatic startup of the application. On S60 3rd Edition
       
   768 phones, an application can register itself to be automatically started
       
   769 when the phone is turned on.
       
   770 
       
   771 Note: Self-signed applications and applications with UID in the
       
   772 unprotected range cannot register to be automatically started (see
       
   773 options "--uid" and "--cert" above).
       
   774 
       
   775     --runinstall
       
   776     -R
       
   777 
       
   778 Run the application after installation. After copying all files to the
       
   779 phone, the application is automatically started.
       
   780 
       
   781 Note: Phones will ignore this flag in SIS files using self-signed
       
   782 certificates (see option "--cert" above).
       
   783 
       
   784     --heapsize=min,max
       
   785     -H min,max
       
   786 
       
   787 Heap size limits for the application. Defaults of 100 kilobytes and four
       
   788 megabytes are used if no heap size option is given. If only one value is
       
   789 given, it is used as both the heap minimum and heap maximum value.
       
   790 
       
   791 Values may have suffix "k" or "M" (case insensitive) to denote kilobytes
       
   792 (1024 bytes) and megabytes (1048576 bytes), respectively.
       
   793 
       
   794 The heap minimum value determines if a program is allowed to start. If
       
   795 less than the set amount of memory is available, program start-up fails.
       
   796 The heap maximum value limits the memory a program can allocate. Memory
       
   797 allocations beyond the set limit will fail. The default of one megabyte
       
   798 is usually enough, but processing large datasets such as images from an
       
   799 integrated camera might require setting the heap maximum value higher.
       
   800 
       
   801     --profile=console
       
   802     -P console
       
   803 
       
   804 The profile selected determines the environment in which the packaged Python 
       
   805 script is run. The two possible values are 's60ui' and 'console', the former
       
   806 being the default value. The Python core remains the same in both the profiles.
       
   807 
       
   808 If the console profile is selected then the application needs OpenC's STDIO
       
   809 console already installed. All UI related modules like appuifw, graphics will
       
   810 not work in this mode.
       
   811 
       
   812     --mode=pycore
       
   813     -m pycore
       
   814 
       
   815 The mode option takes two values - 'pycore' or 'pys60'. Setting the mode as
       
   816 'pycore' will result in the Python core modules taking priority over the PyS60
       
   817 extension modules when module names conflict. When 'pycore' mode is selected
       
   818 the conflicting PyS60 extension modules will not be available with the same
       
   819 name. However you can import the conflicting modules using their new names as
       
   820 mentioned in the note below. In 'pys60' mode the conflicting core modules will
       
   821 not be available at all. The default value of this option is 'pycore'.
       
   822 Note: calendar and socket are the only two conflicting modules and they can be
       
   823 imported using their new names e32calendar and btsocket in 'pycore' mode.
       
   824 
       
   825     --extra-modules=mod1,mod2
       
   826     -o mod1,mod2
       
   827 
       
   828 This option can be used to specify any additional dependencies that should be
       
   829 packaged with the application sis. The dependencies will be searched in the
       
   830 custom search paths specified in module_search_path.cfg present under the
       
   831 dev-modules directory and then in standard-module and dev-modules directories.
       
   832 
       
   833     --ignore-missing-deps
       
   834 
       
   835 If specified the packaging continues by displaying any missing dependencies as
       
   836 warnings. Else packaging is aborted after displaying the missing dependencies
       
   837 as errors.
       
   838 
       
   839     --platform-uid=0x101f7961,...
       
   840 
       
   841 This option can be used to specify the S60 platform UID of the devices on which
       
   842 the application is supported. The default value of this option are 
       
   843 0x101f7961 and 0x1028315F (referring to S603rdEditon and S605thEditon UID 
       
   844 respectively)
       
   845     
       
   846     --sourcecode
       
   847 
       
   848 By default the application is packaged as bytecode. In this mode, the module
       
   849 import is faster but the source code is not visible in tracebacks. With the
       
   850 --sourcecode option, the application is packaged as source code and as a result
       
   851 tracebacks contain the code.
       
   852 
       
   853 EXAMPLES
       
   854 
       
   855 Note: The command lines below may be wrapped over multiple lines due to
       
   856 layout constraints. In reality, each of them should be contained in one
       
   857 physical command line.
       
   858 
       
   859     $ ensymble.py py2sis myprog.py
       
   860 
       
   861 This generates a SIS file called "myprog_v1_0_0.sis" in current working
       
   862 directory. This SIS file is ready to be uploaded to a S60 3rd Edition
       
   863 phone. Package version defaults to 1.0.0, a test-range UID is
       
   864 auto-generated for the package and a default self-signed certificate is
       
   865 used to digitally sign the SIS file. A default icon (the Python logo) is
       
   866 used for application icon.
       
   867 
       
   868     $ echo "12345" | ensymble.py py2sis
       
   869         --cert mycert.cer --privkey mykey.key
       
   870         myprog.py
       
   871 
       
   872 Pass phrase can be given in Ensymble standard input, so that it will not
       
   873 be visible to all users of the computer (see option "--passphrase"
       
   874 above).
       
   875 
       
   876 
       
   877 The "signsis" command
       
   878 ---------------------
       
   879 
       
   880 SYNOPSIS
       
   881 
       
   882     $ ensymble.py signsis
       
   883         [--unsign]
       
   884         [--cert=mycert.cer] [--privkey=mykey.key] [--passphrase=12345]
       
   885         [--execaps=Cap1+Cap2+...] [--dllcaps=Cap1+Cap2+...]
       
   886         [--encoding=terminal,filesystem] [--verbose]
       
   887         <infile> [outfile]
       
   888 
       
   889 
       
   890 DESCRIPTION
       
   891 
       
   892 The "signsis" command (re-)signs a SIS package with the certificate
       
   893 provided, stripping out any existing certificates, if any. Capabilities
       
   894 of all EXE and DLL files contained in the SIS package can optionally be
       
   895 modified.
       
   896 
       
   897 Extension module authors may want to distribute a version of their SIS
       
   898 packages with only limited capabilities. Users can then adjust the
       
   899 capabilities according to their own needs and sign the SIS package with
       
   900 their own certificates.
       
   901 
       
   902 Note: SIS packages may embed other SIS packages. The "signsis" command
       
   903 will only alter the main SIS, leaving all embedded SIS packages intact.
       
   904 
       
   905 
       
   906 PARAMETERS
       
   907 
       
   908     infile
       
   909 
       
   910 Path of the original SIS file.
       
   911 
       
   912     outfile
       
   913 
       
   914 Path of the modified SIS file. If a directory name is given, input file
       
   915 name is used as the output file name.
       
   916 
       
   917 Note: If no output file name is given, original SIS file is overwritten!
       
   918 
       
   919     --unsign
       
   920     -u
       
   921 
       
   922 Instead of signing a SIS file, remove all signatures from it. This is
       
   923 useful when submitting the SIS file to an external signing authority,
       
   924 otherwise the Ensymble default certificate may remain in the resulting
       
   925 signed SIS file.
       
   926 
       
   927     --cert=mycert.cer
       
   928     -a mycert.cer
       
   929 
       
   930 Certificate to use for signing in PEM (text) format. If no certificate
       
   931 and its private key are given, Ensymble uses a default self-signed
       
   932 certificate (see option "--cert" for command "py2sis" above).
       
   933 
       
   934     --privkey=mykey.key
       
   935     -k mykey.key
       
   936 
       
   937 Private key of the certificate in PEM (text) format. If option "--cert"
       
   938 (above) is given, this option is required as well.
       
   939 
       
   940     --passphrase=12345
       
   941     -p 12345
       
   942 
       
   943 Pass phrase of the private key.
       
   944 
       
   945 Note: Using command line options to give the pass phrase is insecure.
       
   946 Any user of the computer will be able to see command lines of started
       
   947 programs and thus will see the pass phrase in plain view. Instead,
       
   948 standard input should be used (see examples below).
       
   949 
       
   950 If no pass phrase is given on the command line or standard input, it
       
   951 will be asked interactively.
       
   952 
       
   953     --execaps=Cap1+Cap2+...
       
   954     -b Cap1+Cap2+...
       
   955 
       
   956 or
       
   957 
       
   958     --execaps=0x12345
       
   959     -b 0x12345
       
   960 
       
   961 Capability names separated by "+" or a numeric capability bitmask. EXEs
       
   962 inside the SIS file will be modified according to these capabilities. If
       
   963 no capability option is given, no EXEs will be modified. Symbian Signed
       
   964 [12] has an FAQ which explains all the available capabilities.
       
   965 
       
   966     --dllcaps=Cap1+Cap2+...
       
   967     -d Cap1+Cap2+...
       
   968 
       
   969 or
       
   970 
       
   971     --dllcaps=0x12345
       
   972     -d 0x12345
       
   973 
       
   974 Capability names separated by "+" or a numeric capability bitmask. DLLs
       
   975 inside the SIS file will be modified according to these capabilities. If
       
   976 no capability option is given, no DLLs will be modified.
       
   977 
       
   978 
       
   979 EXAMPLES
       
   980 
       
   981 Note: The command lines below may be wrapped over multiple lines due to
       
   982 layout constraints. In reality, each of them should be contained in one
       
   983 physical command line, with no spaces around the "+" characters.
       
   984 
       
   985     $ ensymble.py signsis
       
   986         --dllcaps=LocalServices+Location+NetworkServices+PowerMgmt+ProtServ+
       
   987         ReadUserData+SurroundingsDD+SWEvent+UserEnvironment+WriteUserData+
       
   988         ReadDeviceData+TrustedUI+WriteDeviceData
       
   989         --cert=mycert.cer --key=mykey.key --passphrase=12345
       
   990         coolextension_nocert.sis coolextension_mycert.sis
       
   991 
       
   992 Extension module "coolextension_nocert.sis" will be modified with the
       
   993 capabilities listed. A new SIS file "coolextension_mycert.sis" will be
       
   994 created and signed with "mycert.cer" using private key "mykey.key".
       
   995 
       
   996     $ echo "12345" | ensymble.py signsis
       
   997         --dllcaps=0xff1b4 --cert=mycert.cer --key=mykey.key
       
   998         coolextension_nocert.sis coolextension_mycert.sis
       
   999 
       
  1000 Pass phrase can be given in Ensymble standard input, so that it will not
       
  1001 be visible to all users of the computer (see option "--passphrase"
       
  1002 above).
       
  1003 
       
  1004 
       
  1005 The "simplesis" command
       
  1006 -----------------------
       
  1007 
       
  1008 SYNOPSIS
       
  1009 
       
  1010     $ ensymble.py simplesis
       
  1011         [--uid=0x01234567] [--version=1.0.0] [--lang=EN,...]
       
  1012         [--caption="Package Name",...] [--drive=C] [--textfile=mytext_%C.txt]
       
  1013         [--cert=mycert.cer] [--privkey=mykey.key] [--passphrase=12345]
       
  1014         [--vendor="Vendor Name",...] [--encoding=terminal,filesystem]
       
  1015         [--verbose]
       
  1016         <srcdir> [sisfile]
       
  1017 
       
  1018 
       
  1019 DESCRIPTION
       
  1020 
       
  1021 The "simplesis" command is used to create a Symbian installation package
       
  1022 (SIS) from an existing directory structure. Conditional inclusion of
       
  1023 files, dependencies or other fancy features of SIS files are not
       
  1024 supported.
       
  1025 
       
  1026 
       
  1027 PARAMETERS
       
  1028 
       
  1029     srcdir
       
  1030 
       
  1031 The source directory name. The directory structure is preserved under
       
  1032 the installation drive, i.e files and directories under "srcdir" will be
       
  1033 located on the root of the installation drive.
       
  1034 
       
  1035     sisfile
       
  1036 
       
  1037 Path of the SIS file to create. If a directory name is given, output
       
  1038 file name is derived from source directory name and package version (see
       
  1039 option "--version" below). This is also the case when no SIS file name
       
  1040 is given.
       
  1041 
       
  1042     --uid=0x01234567
       
  1043     -u 0x01234567
       
  1044 
       
  1045 Symbian UID for the package. If the UID option is not given, the source
       
  1046 directory name will be used to generate a temporary UID (see command
       
  1047 "genuid" above).
       
  1048 
       
  1049 Note: Use a real UID for all packages to be distributed. The
       
  1050 auto-generated test-range UID is only meant for development and testing,
       
  1051 not for real packages. UIDs can be ordered from Symbian Signed [12]. If
       
  1052 you have already ordered UIDs for 1st or 2nd Edition phones, to use
       
  1053 these UIDs in 3rd Edition phones the first hex digit (a "1") needs to be
       
  1054 changed to an "f".
       
  1055 
       
  1056 Also note: When changing the source directory name, the temporary UID
       
  1057 changes and the SIS package will be considered a new application on the
       
  1058 phone.
       
  1059 
       
  1060     --version=1.0.0
       
  1061     -r 1.0.0
       
  1062 
       
  1063 Package version: X.Y.Z or X,Y,Z (major, minor, build). There may be a
       
  1064 "v" or "V" in front of the major number. Minor and build numbers are
       
  1065 optional.
       
  1066 
       
  1067 If the version option is not given it defaults to 1.0.0.
       
  1068 
       
  1069     --lang=EN,...
       
  1070     -l EN,...
       
  1071 
       
  1072 Comma separated list of two-character language codes. These are the
       
  1073 languages that the SIS file claims to support, English by default.
       
  1074 Symbian installation tools reference [13] lists the available language
       
  1075 codes.
       
  1076 
       
  1077     --caption="Application Name",...
       
  1078     -c "Application Name",...
       
  1079 
       
  1080 Comma separated list of package captions in all selected languages, i.e.
       
  1081 there must be as many comma separated captions as there are languages
       
  1082 listed with the "--lang" option. If no captions are given, source
       
  1083 directory name is used (see parameter "srcdir" above).
       
  1084 
       
  1085 Package caption is displayed during application installation.
       
  1086 
       
  1087     --drive=C
       
  1088     -f C
       
  1089 
       
  1090 Installation drive "C" or "E" or "any", to select where the SIS is to be
       
  1091 installed. Default is "any", which causes the phone to ask the user
       
  1092 where to install the package.
       
  1093 
       
  1094     --textfile=mytext_%C.txt
       
  1095     -t mytext_%C.txt
       
  1096 
       
  1097 Text file (or pattern, see below) to display during install. If none is
       
  1098 given, no extra text will be displayed during install.
       
  1099 
       
  1100 Files to display are in UTF-8 encoding, without Byte-Order Marker (BOM).
       
  1101 The file name may contain formatting characters that are substituted for
       
  1102 each selected language (see option "--lang" above). If no formatting
       
  1103 characters are present, the same text will be used for all languages.
       
  1104 
       
  1105     %%           - literal %
       
  1106     %n           - language number (01 - 99)
       
  1107     %c           - two-character language code in lowercase letters
       
  1108     %C           - two-character language code in capital letters
       
  1109     %l           - language name in English, using only lowercase letters
       
  1110     %l           - language name in English, using mixed case letters
       
  1111 
       
  1112 For example, if there are files named "mytext_EN.txt", "mytext_GE.txt"
       
  1113 and "mytext_SP.txt", a pattern of "mytext_%C.txt" will be able to use
       
  1114 them.
       
  1115 
       
  1116     --cert=mycert.cer
       
  1117     -a mycert.cer
       
  1118 
       
  1119 Certificate to use for signing in PEM (text) format.
       
  1120 
       
  1121 SIS files for Symbian OS v9 and later are required to be digitally
       
  1122 signed. Unsigned packages will not install on the phone. A
       
  1123 self-generated ("self-signed" in crypto parlance) certificate will do,
       
  1124 but only a restricted subset of features ("capabilities", see option
       
  1125 "--caps" below) are available for self-signed applications.
       
  1126 
       
  1127 If no certificate and its private key are given, Ensymble uses a default
       
  1128 self-signed certificate. Software authors are encouraged to create their
       
  1129 own unique certificates for SIS packages that are to be distributed.
       
  1130 
       
  1131     --privkey=mykey.key
       
  1132     -k mykey.key
       
  1133 
       
  1134 Private key of the certificate in PEM (text) format. If option "--cert"
       
  1135 (above) is given, this option is required as well.
       
  1136 
       
  1137     --passphrase=12345
       
  1138     -p 12345
       
  1139 
       
  1140 Pass phrase of the private key.
       
  1141 
       
  1142 Note: Using command line options to give the pass phrase is insecure.
       
  1143 Any user of the computer will be able to see command lines of started
       
  1144 programs and thus will see the pass phrase in plain view. Instead,
       
  1145 standard input should be used (see examples below).
       
  1146 
       
  1147 If no pass phrase is given on the command line or standard input, it
       
  1148 will be asked interactively.
       
  1149 
       
  1150 
       
  1151 EXAMPLES
       
  1152 
       
  1153 Note: The command lines below may be wrapped over multiple lines due to
       
  1154 layout constraints. In reality, each of them should be contained in one
       
  1155 physical command line.
       
  1156 
       
  1157     $ ls -R mymodule
       
  1158     mymodule:
       
  1159     resource/  sys/
       
  1160 
       
  1161     mymodule/resource:
       
  1162     apps/  mymodule.py
       
  1163 
       
  1164     mymodule/resource/apps:
       
  1165     mymodule.rsc
       
  1166 
       
  1167     mymodule/sys:
       
  1168     bin/
       
  1169 
       
  1170     mymodule/sys/bin:
       
  1171     _mymodule.pyd
       
  1172     $ ensymble.py simplesis mymodule
       
  1173 
       
  1174 This generates a SIS file called "mymodule_v1_0_0.sis" in current
       
  1175 working directory. Contents of the SIS file are directly taken from
       
  1176 directory "mymodule" and the relative path of each file is preserved.
       
  1177 The SIS file is ready to be uploaded to a S60 3rd Edition phone. Package
       
  1178 version defaults to 1.0.0, a test UID is auto-generated for the package
       
  1179 and a default self-signed certificate is used to digitally sign the SIS
       
  1180 file.
       
  1181 
       
  1182     $ echo "12345" | ensymble.py py2sis
       
  1183         --cert mycert.cer --privkey mykey.key
       
  1184         mymodule
       
  1185 
       
  1186 Pass phrase can be given in Ensymble standard input, so that it will not
       
  1187 be visible to all users of the computer (see option "--passphrase"
       
  1188 above).
       
  1189 
       
  1190 
       
  1191 The "version" command
       
  1192 ---------------------
       
  1193 
       
  1194 SYNOPSIS
       
  1195 
       
  1196     $ ensymble.py version
       
  1197 
       
  1198 
       
  1199 DESCRIPTION
       
  1200 
       
  1201 The "version" command prints Ensymble version.
       
  1202 
       
  1203 
       
  1204 PARAMETERS
       
  1205 
       
  1206 No parameters
       
  1207 
       
  1208 
       
  1209 EXAMPLES
       
  1210 
       
  1211     $ ensymble.py version
       
  1212     Ensymble v0.28 2009-01-30
       
  1213 
       
  1214 The version string is printed.
       
  1215 
       
  1216 
       
  1217 PROJECT HISTORY
       
  1218 ===============
       
  1219 
       
  1220 2009-01-30
       
  1221 Released Ensymble version v0.28 2009-01-30.
       
  1222 Added genuid command for generating test-range UIDs.
       
  1223 Added --unsign option to the signsis command.
       
  1224 Corrected a bug where DLLs (PYDs) would fail with the py2sis --extrasdir option.
       
  1225 Corrected an encoding bug in simplesis automatic UID generation.
       
  1226 Corrected a possible Unicode exception in py2sis automatic UID generation.
       
  1227 Added a warning about manually specifying a different test-range UID.
       
  1228 
       
  1229 2008-10-17
       
  1230 Converted everything from ISO-8859-1 to UTF-8 encoding.
       
  1231 
       
  1232 2008-06-30
       
  1233 Released Ensymble version v0.27 2008-06-30.
       
  1234 Implemented --heapsize option for the py2sis and altere32 commands.
       
  1235 Implemented --extrasdir option for the py2sis command for more flexibility.
       
  1236 Added support for PKCS#8 format private keys which Symbian sends to people.
       
  1237 
       
  1238 2008-01-27
       
  1239 Released Ensymble version v0.26 2008-01-27.
       
  1240 Incorporated a --runinstall option for the py2sis command, by Jari Kirma.
       
  1241 Commands mergesis and signsis no longer choke on extra bytes in input SIS files.
       
  1242 
       
  1243 2007-12-15
       
  1244 Released Ensymble version v0.25 2007-12-15.
       
  1245 Added --drive option to py2sis and simplesis commands, for installation drive.
       
  1246 Added --vendor option for the simplesis command, as well.
       
  1247 The OpenSSL command line tool can reside in the same directory as Ensymble now.
       
  1248 Prevent leaving zero-byte output files behind when no OpenSSL tool is found.
       
  1249 Made it possible to use numeric capability bitmasks.
       
  1250 Rewrote installation instructions to better take Windows users into account.
       
  1251 
       
  1252 2007-10-18
       
  1253 Released Ensymble version v0.24 2007-10-18.
       
  1254 Added --autostart option to the py2sis command, like in the official py2sis.
       
  1255 Added --vendor option to the py2sis command, useful when signing packages.
       
  1256 Added infoe32 command contributed by Martin Storsjö.
       
  1257 
       
  1258 2007-07-16
       
  1259 Released Ensymble version v0.23 2007-07-16.
       
  1260 Python for S60 changed its UID due to Nokia finally signing it, adapted.
       
  1261 Clarified README in using embedded version and UID strings with py2sis command.
       
  1262 
       
  1263 2007-02-08
       
  1264 Released Ensymble version 2007-02-08 v0.22.
       
  1265 Added simplesis command for creating a SIS package out of a directory structure.
       
  1266 Added maximum file size sanity check for py2sis command.
       
  1267 
       
  1268 2007-02-01
       
  1269 Released Ensymble version 2007-02-01 v0.21.
       
  1270 Added mergesis command for combining several SIS files into one.
       
  1271 
       
  1272 2007-01-01
       
  1273 Released Ensymble version 2007-01-01 v0.20.
       
  1274 Revamped documentation. Now every command and option is explained.
       
  1275 Added signsis command for (re-)signing SIS files.
       
  1276 Added altere32 command for altering pre-compiled Symbian EXEs and DLLs.
       
  1277 Implemented text file option for py2sis command ("Freeware Route to Market").
       
  1278 Made py2sis language option more robust against mistyped language codes.
       
  1279 Made it possible modify signatures of an existing SISController object.
       
  1280 Generated capability fields are smaller now (4 bytes instead of 8 bytes).
       
  1281 Moved default certificate to its own module: defaultcert.py.
       
  1282 Made exception dumps more verbose when the --debug option is present.
       
  1283 Miscellaneous clean-ups.
       
  1284 
       
  1285 2006-11-18
       
  1286 Released Ensymble version 2006-11-18 v0.15.
       
  1287 Rewrote certificate to binary conversion. Fixes problems on Windows.
       
  1288 Removed line feed after pass phrase for OpenSSL. It will not work on Windows.
       
  1289 
       
  1290 2006-11-12
       
  1291 Released Ensymble version 2006-11-12 v0.14.
       
  1292 Modified the generated SIS a bit, to be compatible with native signsis.exe.
       
  1293 Test UIDs use lower case appname now, due to Symbian OS being case insensitive.
       
  1294 Added support for signature chains. Symbian Signed uses those.
       
  1295 
       
  1296 2006-10-06
       
  1297 Fourth public preview release: 2006-10-06 v0.13
       
  1298 OpenSSL invocation uses absolute paths now. Windows XP Pro should work now.
       
  1299 
       
  1300 2006-10-05
       
  1301 Third public preview release: 2006-10-05 v0.12
       
  1302 Implemented automatic test UID generation for the py2sis command.
       
  1303 Added warning message for UIDs in the protected range.
       
  1304 Changed OpenSSL path detection to be carried out only on demand.
       
  1305 Added debug messages for troubleshooting OpenSSL-related problems.
       
  1306 Miscellaneous clean-ups
       
  1307 
       
  1308 2006-09-26
       
  1309 Second public preview release: 2006-09-26 v0.11
       
  1310 Made the default certificate a bit more anonymous.
       
  1311 Added Windows (NT/2000/XP) support.
       
  1312 
       
  1313 2006-09-25
       
  1314 Tested Ensymble on Python v2.2.
       
  1315 Added COPYING file to the source package.
       
  1316 Minor edits to README and ensymble.html
       
  1317 
       
  1318 2006-09-24
       
  1319 First public preview release: 2006-09-24 v0.10
       
  1320 
       
  1321 
       
  1322 LICENSE
       
  1323 =======
       
  1324 
       
  1325 Ensymble developer utilities for Symbian OS(TM)
       
  1326 Copyright 2006, 2007 Jussi Ylänen
       
  1327 Released under the GNU General Public Licence (see file COPYING)
       
  1328 
       
  1329 
       
  1330 CONTACT
       
  1331 =======
       
  1332 
       
  1333 Official web page for Ensymble can be found at
       
  1334 
       
  1335         http://www.nbl.fi/jussi.ylanen/ensymble.html
       
  1336 
       
  1337 
       
  1338 Please send comments, suggestions, corrections and enhancements to:
       
  1339 
       
  1340         jussi.ylanen@iki.fi
       
  1341 
       
  1342 
       
  1343 ACKNOWLEDGEMENTS
       
  1344 ================
       
  1345 
       
  1346 Symbian and all Symbian-based marks and logos are trade marks of Symbian
       
  1347 Limited.
       
  1348 
       
  1349 "Python" and the Python logo are trademarks or registered trademarks of
       
  1350 the Python Software Foundation.
       
  1351 
       
  1352 Nokia, S60 and logo, Series 60 are trademarks or registered trademarks
       
  1353 of Nokia Corporation.
       
  1354 
       
  1355 Windows is a registered trademark of Microsoft Corporation in the United
       
  1356 States and other countries.
       
  1357 
       
  1358 
       
  1359 REFERENCES
       
  1360 ==========
       
  1361 
       
  1362 [1]
       
  1363 Symbian OS
       
  1364 http://www.symbian.com
       
  1365 
       
  1366 [2]
       
  1367 Python for S60
       
  1368 http://www.forum.nokia.com/python
       
  1369 
       
  1370 [3]
       
  1371 Nokia
       
  1372 http://www.nokia.com
       
  1373 
       
  1374 [4]
       
  1375 A list of Nokia S60 phone editions:
       
  1376 http://www.forum.nokia.com/devices/matrix_s60_1.html
       
  1377 
       
  1378 [5]
       
  1379 The Python programming language
       
  1380 http://www.python.org
       
  1381 
       
  1382 [6]
       
  1383 S60 Platform
       
  1384 http://www.s60.com
       
  1385 
       
  1386 [7]
       
  1387 Python-to-SIS, the next generation by Jussi Ylänen
       
  1388 http://www.nbl.fi/jussi.ylanen/py2sisng.html
       
  1389 
       
  1390 [8]
       
  1391 OpenSSL
       
  1392 http://www.openssl.org
       
  1393 
       
  1394 [9]
       
  1395 Stunnel OpenSSL binaries
       
  1396 http://www.stunnel.org/download/binaries.html
       
  1397 
       
  1398 [10]
       
  1399 squeeze utility by Fredrik Lundh
       
  1400 http://effbot.org/zone/squeeze.htm
       
  1401 
       
  1402 [11]
       
  1403 Python standard encodings
       
  1404 http://docs.python.org/lib/standard-encodings.html
       
  1405 
       
  1406 [12]
       
  1407 Symbian Signed
       
  1408 http://www.symbiansigned.com
       
  1409 
       
  1410 [13]
       
  1411 Symbian installation tools reference
       
  1412 http://www.symbian.com/developer/techlib/v70sdocs/doc_source/ToolsAndUtilities/Installing-ref/PackageFileFormatReference.guide.html