Sign Symbian/Qt SIS Apps with Qt Creator on Linux (Bonus: Qt+Qt Mobility Smart Installer for Nokia)
(See my previous article on how to use makesis.exe to sign SIS files on Linux for more details.) To build a Qt/Symbian application on Linux and also sign the generated SIS file with your developer certificate and key, first you must install the Nokia Qt SDK Remote Compiler. Open your Qt/Symbian project, go to Projects facet and add "Remote compiler" configuration.Under Build Steps, expand "Compile at Server" details and you will see Sis Type and Symbian Signing settings. There you only need to specify certificate file, certificate key file, and password/passphrase (if any).As a bonus, you can not only sign the SIS file, but also automatically package it with Nokia Smart Installer!
Therefore, your Qt and Qt Mobility application now complies with Ovi Publish requirements and can be published to the Nokia Ovi Store! :-) Example Nokia Qt SDK Remote Compiler output with Symbian Signing enabled :
Running build steps for project messagemerge...
Uploading to remote compiler
Uploaded: 16/24 kB
Uploaded 24 kB, waiting for build
bldmake bldfiles
WARNING: When building for ARMV5 platform Compiler RVCT2.2 or later is required.
ABLD.BAT build gcce urel
make -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/EXPORT.make" EXPORT VERBOSE=-s
make[1]: Entering directory `/home/ceefour/project/MessageMerge/messagemerge'
Nothing to do
make[1]: Leaving directory `/home/ceefour/project/MessageMerge/messagemerge'
make -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/GCCE.make" MAKEFILE VERBOSE=-s
MMPFILE "/home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP"
make[1]: Entering directory `/home/ceefour/project/MessageMerge/messagemerge'
make -s -C /home/ceefour/project/MessageMerge/messagemerge -f "MAKEFILE_0XEA138C70.MK" TO_ROOT=../../../../../../../../.. EPOCBLD=../../../../../../../../../Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MAKEFILE_0XEA138C70/GCCE TO_BLDINF=../../../../../../../../../home/ceefour/project/MessageMerge/messagemerge PLATFORM=GCCE MAKMAKE
MifConv version 1.11 build (39).
Checking: art/messagemerge-tiny.svg
Choosing...
Convert files...
.
Loading mif icons...
Loading file: /Symbian/9.2/S60_3rd_FP1/epoc32/winscw/c/system/temp/s1c0.tmp/art_messagemerge-tiny.svgb
Writing mif: /Symbian/9.2/S60_3rd_FP1/epoc32/data/z/resource/apps/messagemerge.mif
perl -S makmake.pl -D /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70 GCCE
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(51) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/osextensions/stdapis/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(52) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/osextensions/stdapis/sys/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(55) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/oem/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(57) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/middleware/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(58) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/osextensions/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(59) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/osextensions/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(61) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/applications/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(62) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/osextensions/loc/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(63) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/middleware/loc/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(64) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/applications/loc/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(65) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/osextensions/loc/sc/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(66) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/middleware/loc/sc/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(67) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/domain/applications/loc/sc/" not found
WARNING: /home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70.MMP(72) : SYSTEMINCLUDE path "/Symbian/9.2/S60_3rd_FP1/EPOC32/include/osextensions/stdapis/stlport/" not found
initialiseConfig: GCCE
perl -S ecopyfile.pl "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70/GCCE/messagemerge.rsg" "/Symbian/9.2/S60_3rd_FP1/EPOC32/INCLUDE/messagemerge.RSG"
make[1]: Leaving directory `/home/ceefour/project/MessageMerge/messagemerge'
make -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/GCCE.make" LIBRARY VERBOSE=-s
make[1]: Entering directory `/home/ceefour/project/MessageMerge/messagemerge'
make -s -C /home/ceefour/project/MessageMerge/messagemerge -f "MAKEFILE_0XEA138C70.MK" TO_ROOT=../../../../../../../../.. EPOCBLD=../../../../../../../../../Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MAKEFILE_0XEA138C70/GCCE TO_BLDINF=../../../../../../../../../home/ceefour/project/MessageMerge/messagemerge PLATFORM=GCCE LIB
make -s -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70/GCCE/MESSAGEMERGE_0XEA138C70.GCCE" LIBRARY
make[1]: Leaving directory `/home/ceefour/project/MessageMerge/messagemerge'
make -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/GCCE.make" RESOURCE CFG=UREL VERBOSE=-s
Created /Symbian/9.2/S60_3rd_FP1/EPOC32/INCLUDE/messagemerge.RSG
make[1]: Entering directory `/home/ceefour/project/MessageMerge/messagemerge'
make -s -C /home/ceefour/project/MessageMerge/messagemerge -f "MAKEFILE_0XEA138C70.MK" TO_ROOT=../../../../../../../../.. EPOCBLD=../../../../../../../../../Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MAKEFILE_0XEA138C70/GCCE TO_BLDINF=../../../../../../../../../home/ceefour/project/MessageMerge/messagemerge PLATFORM=GCCE CFG=UREL RESOURCE
make -s -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70/GCCE/MESSAGEMERGE_0XEA138C70.GCCE" RESOURCEUREL
Creating /symbian/9.2/s60_3rd_fp1/epoc32/build/home/ceefour/project/MessageMerge/messagemerge/messagemerge_0xea138c70/gcce/urel
make[1]: Leaving directory `/home/ceefour/project/MessageMerge/messagemerge'
make -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/GCCE.make" TARGET CFG=UREL VERBOSE=-s
make[1]: Entering directory `/home/ceefour/project/MessageMerge/messagemerge'
make -s -C /home/ceefour/project/MessageMerge/messagemerge -f "MAKEFILE_0XEA138C70.MK" TO_ROOT=../../../../../../../../.. EPOCBLD=../../../../../../../../../Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MAKEFILE_0XEA138C70/GCCE TO_BLDINF=../../../../../../../../../home/ceefour/project/MessageMerge/messagemerge PLATFORM=GCCE CFG=UREL BLD
make -s -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MESSAGEMERGE_0XEA138C70/GCCE/MESSAGEMERGE_0XEA138C70.GCCE" UREL
main.cpp
templatesdialog.cpp
templateeditdialog.cpp
mainwizard.cpp
messagemerger.cpp
moc_templatesdialog.cpp
moc_templateeditdialog.cpp
moc_mainwizard.cpp
qrc_images-symbian.cpp
make[1]: Leaving directory `/home/ceefour/project/MessageMerge/messagemerge'
make -r -f "/Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/GCCE.make" FINAL CFG=UREL VERBOSE=-s
make[1]: Entering directory `/home/ceefour/project/MessageMerge/messagemerge'
make -s -C /home/ceefour/project/MessageMerge/messagemerge -f "MAKEFILE_0XEA138C70.MK" TO_ROOT=../../../../../../../../.. EPOCBLD=../../../../../../../../../Symbian/9.2/S60_3rd_FP1/EPOC32/BUILD/home/ceefour/project/MessageMerge/messagemerge/MAKEFILE_0XEA138C70/GCCE TO_BLDINF=../../../../../../../../../home/ceefour/project/MessageMerge/messagemerge PLATFORM=GCCE CFG=UREL FINAL
make[1]: Leaving directory `/home/ceefour/project/MessageMerge/messagemerge'
make -s -f Makefile sis
Processing messagemerge_release-gcce.pkg...
Created messagemerge_unsigned.sis
Successfully created messagemerge.sis for release-gcce using certificate c/home/ceefour/project/MessageMerge/messagemerge/.cert/OVI_10-29-2010.crt!
make -s -f Makefile ok_installer_sis
Processing messagemerge_installer.pkg...
Created messagemerge_installer_unsigned.sis
Successfully created messagemerge_installer.sis using certificate c/home/ceefour/project/MessageMerge/messagemerge/.cert/OVI_10-29-2010.crt!
Binary downloaded to: /home/ceefour/project/MessageMerge/messagemerge-build-wcc/messagemerge_installer_qt-4_6_3_m1_0_2_s60_3_1.sis
Download complete
