Nokia has now provided a new page of its own, which contains more detail on the process. Please no longer use the script provided below, but instead head over to this site…
Nokia’s QA has finally managed to ok my signed file, which means that the process I have used seems to be acceptable for now (they can change their opinion anytime, so don’t sue me). I promised a tutorial some time ago – here it is.
Step 1 – get Qt 4.6.3, Carbide 2.4 and SMI
First of all, it is important that you have the latest version of Qt (aka 4.6.3) on your machine. Furthermore, you should also be the proud owner of a somewhat recent Carbide.
As the Smart Installer is not included in the Qt 4.6.3, you need to download it from here and copy it to the folder indicated in the other post.
Step 2 – check the pkg files
If your Carbide is set up sanely, it will generate two .pkg files. The first one of them is called _template, and contains the build settings for your app. There is not much to do here except for setting up vendor and name strings.
The _installer file, however, creates the installer. It must be modified to use the creator ID Nokia has specified – the relevant section and the correct ID are in the snippet below:
; BallZ_installer.pkg generated by qmake at 2010-06-23T19:14:41
; This file is generated by qmake and should not be modified by the user
; SIS header:
; Localised Vendor name
; Unique Vendor name
; Manual PKG pre-rules from PRO files
; Default dependency to Qt libraries
; Default HW/platform dependencies
"C:/Symbian/Carbide/workspace/QtBallZ/BallZ.sis" - "c:admBallZ.sis"
Be aware that Qt will actively fight the changes, and will destroy them after every qmake run.
Step 3 – set up SIS builds
Now, build one sis for each pkg using Carbide’s SIS building settings.
The settings should be straightforward (sign all with the developer certificate), but do not change the file names of the “inner sis” – the outer sis won’t be able to find it otherwise.
Step 4 – Build, disable
In the next step, build the actual sis files so that Carbide creates them. Then, open the SIS properties and disable the rebuilding of the inner SIS:
Step 5 – express sign inner sis
This one should be straightforward – get the inner SIS signed like you would sign any other application for distribution.
Step 6 – rebuild outer SIS
If you look again at the installer pkg, you will find a sis file name specified. Delete all sis files in the output folder of the project, and copy the signed file from step 5 into the place. Then, rename it to bear the name mentioned in the _installer pkg. In the case above, it were BallZ.sis.
Then, rebuild the SIS files – but check again that the other sis file is disabled as per step 4.
Step 7 – sign the “compound”
In the next step, get the compound signed. Don’t forget to rejoice – the Symbian Foundation has just earned some extra money.
Step 8 – upload to Ovi
Upload the compound to Ovi, setting the UID3 to the UID of the outer!!!! sis file.
Then, enjoy the wait.
P.S. Just in case anyone wonders if it works on a Vivaz: no dice. I tried it, and the installer fails with a weird message.
Legal disclaimer: no warranties for correctness!