PKG文件范例详解
2011-04-04 18:11
155 查看
在软件安装的时候提供一些说明性的文字
在pkg文件里面添加:
"sms.txt"
-"",FT,TA //提示继续 和 取消
或者
"sms.txt" -"!:/private/20023C1D/install.txt", FT, TC //用户只能选择 继续
//有时候会出现乱码现象,尝试下将txt文件保存为utf8 或者 Unicode试试一般会解决问题
-------------------------
;PKG文件头部信息--开始
;语言支持(非必要)
&
EN
,
ZH
;安装程序标题,版本号及SIS文件UID
#{"
Language Nam
e 1
","
Language Name 2
"},(
UID
),
0
,
0
,
0
,
SH
,
NC
,TYPE=
SISAPP
;开发平台兼容性校验
(
UID
),
0
,
0
,
0
,{"
Series60ProductID
","
Series60ProductID
"}
;PKG文件头部信息--结束
;安装文件信息--开始
;单语言文件安装
"
PCSourceFile/MyApp.app
"-"
MobileDestFile/MyApp.app
"
;多语言文件安装(如果是单语言安装程序,则此段可省略)
{
"
PCSourceFile/MyApp.rEN
"
"
PCSourceFile/MyApp.rZH
"
}-"
MobileDestFile/MyApp.rsc
"
;必要组件校验(非必要)
(
UID
),
0
,
0
,
0
,{"
Language Name 1
","
Language Name 2
"}
;可选附加组件(非必要)
!({"
Language Name 1 for Add-on 1 (20kb)
","
Language Name 2 for Add-on 1 (20kb)
"},{"
Language Name 1 for Add-on 2 (20kb)
","
Language Name 2 for Add-on 2 (20kb)
"})
;条件判断(非必要,如果可选附加组件部分没有写,那么此部分也不需要写)
IF option1
"
PCSourceFile/addon/MyPic.gif
"-"
!:/System/Apps/MyApp/addon/MyPic.gif
"
ENDIF
;附加SIS文件(非必要)
@"
PCSourceFile
",(
0x12345678
)
;安装文件信息--结束
语言支持
界面语言支持
行,如果此行不写则取默认值&
EN
一个SIS文件内可以包含多个界面语言版本,但只能安装一种语言(安装时会自动根据你的系统语言来安装相应的界面语言版本)
多个语言时用,
分隔
多语言安装程序时不可省略界面语言支持
行
·单一语言:&
ZH
·多语言:&
EN
,
ZH
参数值
说明参数值说明参数值说明参数值说明AF荷兰语(南非)FI芬兰语LS西班牙语(拉丁美洲)SF法语(瑞士)AH埃塞俄比亚语FR法语LT立陶宛语SG德语(瑞士)AM英语(美国
)FS瑞典语(芬兰)LV拉脱维亚语SQ阿尔巴尼亚语AR阿拉伯语GA爱尔兰语MK马其顿语SW瑞典语AS奥地利语GD盖尔人语(苏格兰)ML马拉亚拉姆语(印度)SZ意大利
语
(瑞士)AU英语(澳大利亚)GE德语MN蒙古语TA泰米尔语BE俄语(白俄罗斯)GU古吉拉特语(印度)MO摩尔多瓦语TC中文(台湾)BF法语(比利
时)HE希伯来语MR马拉提语(摩剌陀语)TE泰卢固语(印度)BG保加利亚语HI印地语(印度)MS马来语TH泰语BL佛兰德斯语(比利时)HK中文
(香港)MY缅甸语TI厄立特里亚语BN孟加拉语HR克罗地亚语NN尼诺斯克语(挪威)TK土库曼语bo
藏语HU匈牙利语NO挪威语TL塔加拉语(菲律宾)BP葡萄牙语(巴西)HY亚美尼亚语NZ英语(新西兰)TU土耳其语CA加泰罗尼亚语
(西班牙)IC冰岛语OS国际西班牙语VI越南语CE英语(加拿大)IE国际英语PL波兰语UK乌克兰语CF法语(加拿大)IF国际法语PO葡萄牙语UR乌尔都语CS捷克语IN印度尼西亚语PA旁遮普语
(印度、巴基斯坦)ZH中文CT塞浦路斯语IT意大利语RO罗马尼亚语ZU祖鲁语CY威尔士语JA日语RU俄语 DA丹麦语KA格鲁吉亚语(土耳其)SI斯里兰卡语 DU荷兰语KK哈萨克语SK斯洛伐克语 EL希腊语KM柬埔寨语SL斯洛文尼亚语 EN英语(默认值
)KN坎拿达语(印度)SO索马里语 ET爱沙尼亚语KO韩语SP西班牙语 FA波斯语LO老挝语SR塞尔维亚语 安装程序信息
以#{"
RescoView
","
RescoView简体汉化版
"},(
0x11111111
),
4
,
10
,
0
为例说明:
1.#{"
RescoView
","
RescoView简体汉化版
"}
是安装程序标题
如果是单一语言的安装程序,则只写一个标题即可
如果是多语言安装程序,则需要按语言支持区段的语言顺序来依次(就是按&
EN
,
ZH
那个部分的顺序)输入各语言版本下的标题,标题名称用“,
”分割
·单一语言:#{"
RescoView简体汉化版
"}
·多语言:#{"
RescoView
","
RescoView简体汉化版
"}
2.(
0x11111111
)
是SIS安装文件的UID(自定义,SIS安装文件即是安装完成后在C:/system/install/
生成的相应SIS文件)
3.4
,
10
,
0
是程序安装时显示的版本号,4
是主版本号,10
是次版本号,0
是build版本号;4
,
10
,
0
在安装时显示的就是4.10
4.SH
,
NC
是SIS文件选项(此处为非必要参数)
参数值(缩写)参数值(全称)说明SHSHUTDOWNAPPS
关闭应用程序NCNOCOMPRESS
不压缩
5.TYPE=
SISAPP
是SIS文件的类型(如果未指定,则默认为TYPE=
SISAPP
)
参数值(缩写)参数值(全称)说明SASISAPP
标准的安装程序(默认值)SYSISSYSTEM
此安装程序类型包含系统库或共享库文件注册(DLL或OPX文件),这些库文件在主程序卸载时会一并卸载
SOSISOPTION
此安装程序类型安装时有可选组件,选择安装的组件在主程序卸载时会一并卸载
SCSISCONFIG
此安装程序类型可以配置已存在的程序或服务,此类型打包时不应该包含任何新文件。只能用来配置安装或运行过程中的文件显示及增加新组件等等操作。在程序管理列表中不会显示配置程序的卸载,需要手动卸载
SPSISPATCH
此安装程序类型会修复已存在的的程序,在程序管理列表中不会显示修复程序的卸载,需要手动卸载
SUSISUPGRADE
此安装程序类型可以升级已存在的程序,但在程序管理列表中不会显示升级程序的卸载,需要用户手动删除文件或重新关联程序才能撤销升级
兼容性
此区段用来限制程序是否可以被正确安装在目标机型上(比如防止NOKIA Series60的软件安装在UIQ的机型上,避免造成程序错误)
以(
0x101F6F88
),
0
,
0
,
0
,{"
Series60ProductID
","
Series60ProductID
"}
为例说明:
1.(
0x101F6F88
)
是开发
平台SDK的UID,也可以用具体机型的UID来限制
下表给出几个常见机型的平台UID及机型UID(由于能力问题,UID资料
可能存在错误或不完全,请见谅)
以下对Symbian OS
几个版本以及Series60的性能做一下概述
1.屏幕显示象素:176×2082.支持Java (J2ME/MIDP 1.0)及C++开发3.便于简单短周期的开发程序4.提供多样性并强大的应用程序开发框架5.Series60 v2.x版本提供了对Java (J2ME/MIDP 2.0)及界面主题
模式的支持6.Symbian OS
8.0提供了对3G网络的支持
SDK版本UIDSeries60 SDK 0.9
(Symbian 6.1)Series60 SDK 2.0
(Symbian 7.0)Series60 SDK 2.0
(Symbian
8.0)手机型号UID手机型号UID手机型号UIDSeries60 0.9 0x101F6F88Nokia
76500x101F6F87Nokia 66000x101F7963Nokia 66300x101F7964Series60 1.0
0x101F795FNokia 3650/3660/36200x101F7962Nokia 66200x1020216B Series60
1.1 0x101F8201Nokia N-Gage0x101F8A64Nokia 76100x101FD5DBSeries60 1.2
0x101F8202Nokia N-Gage QD Series60 2.00x101F7960Siemens
SX10x101F9071Series60 2.1 0x101F9115Sendo-X0x101FA031Series60 2.2
0x10200BABBenQ P300x101FD279UIQ 2.0 0x101F617B UIQ 2.1 0x101F61CE
2.2
,
0
,
0
是平台的版本号,2
是主版本号,0
是次版本号,0
是build版本号,2
,
0
,
0
显示的版本就是2.0
注:此处的版本号要根据UID来作相应改动。
例:如果UID是0x101F6F88
(Series60 0.9),则主版本号则需要写成0
,次版本号也写0
即可
pkg文件
2010/01/26 10:17 A.M.
转自:http://www.yuelongr.cn/post/880.html
文本警告
在安装时你可以指定一段文本显示,这段文本不会复制到手机上,只是在安装时显示需知信息或相关协议。在pkg中增加如下代码:
"license.txt" - "", FILETEXT, TEXTCONTINUE
FILETEXT
表明这个文件在安装时显示. TEXTCONTINUE提供了一个“继续”按钮用来关闭文本内容,继续安装程序。
你也可以将TEXTCONTINUE
替换为如下选项:
• TEXTSKIP
显示“是/否”选项,如果选择是,那么就会继续安装,如果选择否,那么下段文本就会跳过,但安装还是会正常继续。
• TEXTEXIT
显示“是/否”选项,如果选择是,那么安装就会继续,反之安装就会终止,任何你已安装的文件会被移除。
• TEXTABORT
显示“是/否”选项,如果选择否,那么安装会终止,但是已经安装的将不会删除,删除运行时生成的文件。
多语言文本提示
文本提示的语言可以根据手机缺省语言自己适配,如:
IF (LANGUAGE=2) ; If the language is French, then display mytext.t02
"mytext.t02"-"", FILETEXT, TEXTABORT
ELSEIF (LANGUAGE=3) ; If the language is German, then display mytext.t03
"mytext.t03"-"", FILETEXT, TEXTABORT
ELSE ; Otherwise display mytext.t01
"mytext.t01"-"", FILETEXT, TEXTABORT
ENDIF
上述示例当手机缺省语言为法语时将显示mytext.t02
,当为德语时则显示mytext.t03
,其他语种则为mytext.t01
此外,你需要有相应语言定义在PKG
;Language - standard language definitions
&EN,FR,GE
删除运行时生成的文件
当你要卸载一个sis文件时,卸载程序将会移除所有在安装时已经拷贝到手机上的文件。但那些运行时生成的文件怎么办?
如果程序生成文件名在安装时就要知道,那么需要在pkg文件中增加'null files',pkg中这些文件的格式(与语言无关)如下:
"" - "C/system/data/my_runtime_generated_file", FILENULL
这
里my_runtime_generated_file是个程序生成的文件,FN(FILENULL)参数表示这个文件尚未存在,所以没有包含在sis文
件中。是程序运行时才会生成的,而在程序卸载时将会被删除。注意源文件并不重要,只要为空即可("")。同样注意这个文件在升级为新版时不会被删除,这样
就可以确保一些如ini等存储程序参数的文件不会在升级时丢失。
FILENULL选项在Symbian OS v9.x中并不支持,建议开发者在程序的data cage中生成文件,这样可以在卸载时彻底删除。
如果程序生成文件的数目(或文件名)不可知,这样的情况就比较复杂了。有一个解决方案,sis可以包含一个卸载程序,可以用来查找并删除相关文件。这样程序需要在卸载时自动运行它:
"/epoc32/release/armi/urel/uninst.app" - "!:/system/apps/myapp/uninst.app", RR, RW
RR (RUNREMOVE)参数设置该文件在卸载时自动运行. RW (RUNWAITEND)表明系统将会等待该程序完成后才继续卸载过程。
内嵌SIS文件
你可以包含另一个sis文件,按照如下代码设置:
@”sis file name”,(UID)
例如@”prog1.sis”,(0x12341234)表示安装prog1.sis,它的UID为0x12341234。注意在卸载时,这里内嵌的sis将要等系统判定没有其他程序使用它才会被删除(即没有其他安装组件包括这个内嵌sis在他们的pkg文件中)
在安装或卸载时运行执行文件
你可以在指定可执行文件那行的末尾添加FILERUN (FR)
和RUNINSTALL (RI)
让它在安装时运行
例如:
"/Symbian/9.1/S60_3rd_MR/Epoc32/release/gcce/urel/myprogram.exe"-"!:/sys/bin/myprogram.exe",FR,RI
将会安装myprogram.exe,并在安装过程执行它。这里RUNINSTALL关键字也可以被下列选项取代:
• RUNREMOVE (RR)
指定程序只在卸载时执行它;
• RUNBOTH (RB)
在安装和卸载时都要执行这个程序
上述三个选项最好配以RUNWAITEND (RW)关键字,它指明安装程序要等候该程序执行完毕再继续。如果没有指明这个关键字,那么程序启动后,安装就将继续了。
FILERUN (FR) RUNINSTALL (RI) 选项无法工作于自签名软件
,它需要一个受信签名(Open Signed Online or Open Signed Offline during R&D stage and Symbian Signed when
released),否则程序所需能力将不能得以安装。
必备程序选项
你可以指定一个必备程序选项,它表明系统必须先安装有它,才能继续下面的安装,它的格式如下:
{UID}, Major_Version_#,Minor_Version_#,Build_#,{“Product Name”}
它表明这个组件的UID和名称,以及所需最早版本号,否则将不能继续下面的安装。
例如:
{0x10000123},1,0,0,{"MyDll"}
表明组件名为MyDll,UID为0x10000123,以及最小版本号1.0.0,表明系统至少要安装有该版本。必备程序选项也可以如下,这里表明所需的目标平台:
(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
这里所需的组件就是Series60ProductID, 而版本号至少为0.0.0或更高,都是安装所必需的条件。
从第三版开始,S60平台标识将显示在方括号中,具体如下:
[0x101F7961], 0, 0, 0, {"S60ProductID"}
语言支持
程序可以多个语言版本,而只要一个sis包即可。当用户安装sis文件时,将被提示选择安装语言。要增加语言,就要在你的pkg文件里添加语言支持行。它以&开始,包含下列语言列表中的一个:
AM– US English
AS – Austrian German
AU – Australian English
BF – Belgian French
BL – Belgian Flemish
CS – Czech
DA – Danish
DU – Dutch
EN – UK English
FI – Finnish
FR – French
GE – German
HK – Hong Kong Chinese
HU – Hungarian
IC – Icelandic
IF – International French
IT – Italian
JA – Japanese
NO – Norwegian
NZ – New Zealand
PL – Polish
PO – Portuguese
RO - Romanian
RU – Russian
SF – Swiss French
SG – Swiss German
SK – Slovak
SL – Slovenian
SP – Spanish
SW – Swedish
TC – Taiwan Chinese
TH – Thai
TU – Turkish
ZH – Prc Chinese
下面是一个实例:
&EN, FR, FI
它表明sis包含有英语,法语和芬兰语,如果没有语言项,则&EN是默认的。
手机支持
我们有可能需要指明安装程序只为部分手机支持。如,如果一个程序需要WiFi,那么就只能安装到有wifi的手机。如果到非wifi手机,那么安装将显示一个警告表示程序不兼容。
下列代码演示了程序只能安装到Nokia N80, N93, N93和N95手机上。
[0x200005F9], 0, 0, 0, {"Nokia N80 ID"}
[0x20000600], 0, 0, 0, {"Nokia N93 ID"}
[0x20000605], 0, 0, 0, {"Nokia N93i ID"}
[0x2000060B], 0, 0, 0, {"Nokia N95 ID"}
手机型号的标识可以参考S60 Platform and device identification codes
.
安装特定手机所需文件
可能我们的部分安装文件需要依赖用户手机而定,例如一个游戏开发者可能需要生成一个指定的DLL,以便支持3D加速。那么对没有3D加速的手机,
就只能安装标准的DLL,示例代码如下:
IF (MachineUID=0x20000600) OR (MachineUID=0x2000060B)
; If the device is Nokia N93 or N95, then install files in this block.
"/epoc32/release/armv5/urel/mydll_3d" -"!:/sys/bin/mydll.dll"
ELSE
; Otherwise install any files in this block.
"/epoc32/release/armv5/urel/mydll" -"!:/sys/bin/mydll.dll"
ENDIF
手机标识代码可以在这里找到S60 Platform and device identification codes
.
安装指定平台的文件
可能我们部分安装文件依赖于手机的操作系统,例如第三版FP2就去掉了一些蓝牙连接库,这样的不同导致我们在安装时也需要区别对待,手机平台可以在z:/system/install文件夹中获取:
if exists("z:/system/install/Series60v3.2.sis")
"/Epoc32/release/gcce/UREL/Common_0x123123123_fp2.dll"-"C:/sys/bin/common_0x123123123.dll"
else
"/Epoc32/release/gcce/UREL/Common_0x123123123.dll"-"C:/sys/bin/common_0x123123123.dll"
endif
安装条件
下列函数也可以使用在pkg中:
package()
用来测试一个安装包是否存在;
exists()
用来测试给定文件是否存在
appprop()
获得注册表中的相关属性
DevProp()
函数用来询问手机能力值,注意不是直接提供的名字属性
package()
:如果指定UID已经安装将返回true,否则返回false,下列代码表示如果UID为0x11223344那么将安装foo.txt文件
IF package(0x11223344)
"foo.txt"-"c:/foo.txt"
ENDIF
exists()
: 如果test.txt存在则返回true,将安装新的
if exists("c:/test.txt")
"text/exists.txt"-"!:/private/0x01234567/exists.txt"
appprop()
: 该函数的第一个参数是package UID.第二个参数是获取的propid(property id). 下列代码测试了其他包的能力
;Dependencies
(0x10000003), 1, 2, 3, {"Depend-EN"}
if (appprop(0x10000003,0) = 1)
"text/appprop1.txt"-"!:/Documents/appprop1.txt"
elseif (appprop(0x10000003,0) = 2)
"text/appprop2.txt"-"!:/Documents/appprop2.txt"
endif
DevProp()
: 手机支持能力函数,它提供了直接访问HAL API的能力,即HAL::Get()函数。这个函数可以有条件项使用,用来询问手机的能力。注意这个能力不是名字属性
+(0=1,1=2,3=-1)
if DevProp(1)
"text/appprop1.txt"-"", FT, TC
endif
在pkg文件里面添加:
"sms.txt"
-"",FT,TA //提示继续 和 取消
或者
"sms.txt" -"!:/private/20023C1D/install.txt", FT, TC //用户只能选择 继续
//有时候会出现乱码现象,尝试下将txt文件保存为utf8 或者 Unicode试试一般会解决问题
-------------------------
;PKG文件头部信息--开始
;语言支持(非必要)
&
EN
,
ZH
;安装程序标题,版本号及SIS文件UID
#{"
Language Nam
e 1
","
Language Name 2
"},(
UID
),
0
,
0
,
0
,
SH
,
NC
,TYPE=
SISAPP
;开发平台兼容性校验
(
UID
),
0
,
0
,
0
,{"
Series60ProductID
","
Series60ProductID
"}
;PKG文件头部信息--结束
;安装文件信息--开始
;单语言文件安装
"
PCSourceFile/MyApp.app
"-"
MobileDestFile/MyApp.app
"
;多语言文件安装(如果是单语言安装程序,则此段可省略)
{
"
PCSourceFile/MyApp.rEN
"
"
PCSourceFile/MyApp.rZH
"
}-"
MobileDestFile/MyApp.rsc
"
;必要组件校验(非必要)
(
UID
),
0
,
0
,
0
,{"
Language Name 1
","
Language Name 2
"}
;可选附加组件(非必要)
!({"
Language Name 1 for Add-on 1 (20kb)
","
Language Name 2 for Add-on 1 (20kb)
"},{"
Language Name 1 for Add-on 2 (20kb)
","
Language Name 2 for Add-on 2 (20kb)
"})
;条件判断(非必要,如果可选附加组件部分没有写,那么此部分也不需要写)
IF option1
"
PCSourceFile/addon/MyPic.gif
"-"
!:/System/Apps/MyApp/addon/MyPic.gif
"
ENDIF
;附加SIS文件(非必要)
@"
PCSourceFile
",(
0x12345678
)
;安装文件信息--结束
语言支持
界面语言支持
行,如果此行不写则取默认值&
EN
一个SIS文件内可以包含多个界面语言版本,但只能安装一种语言(安装时会自动根据你的系统语言来安装相应的界面语言版本)
多个语言时用,
分隔
多语言安装程序时不可省略界面语言支持
行
·单一语言:&
ZH
·多语言:&
EN
,
ZH
参数值
说明参数值说明参数值说明参数值说明AF荷兰语(南非)FI芬兰语LS西班牙语(拉丁美洲)SF法语(瑞士)AH埃塞俄比亚语FR法语LT立陶宛语SG德语(瑞士)AM英语(美国
)FS瑞典语(芬兰)LV拉脱维亚语SQ阿尔巴尼亚语AR阿拉伯语GA爱尔兰语MK马其顿语SW瑞典语AS奥地利语GD盖尔人语(苏格兰)ML马拉亚拉姆语(印度)SZ意大利
语
(瑞士)AU英语(澳大利亚)GE德语MN蒙古语TA泰米尔语BE俄语(白俄罗斯)GU古吉拉特语(印度)MO摩尔多瓦语TC中文(台湾)BF法语(比利
时)HE希伯来语MR马拉提语(摩剌陀语)TE泰卢固语(印度)BG保加利亚语HI印地语(印度)MS马来语TH泰语BL佛兰德斯语(比利时)HK中文
(香港)MY缅甸语TI厄立特里亚语BN孟加拉语HR克罗地亚语NN尼诺斯克语(挪威)TK土库曼语bo
藏语HU匈牙利语NO挪威语TL塔加拉语(菲律宾)BP葡萄牙语(巴西)HY亚美尼亚语NZ英语(新西兰)TU土耳其语CA加泰罗尼亚语
(西班牙)IC冰岛语OS国际西班牙语VI越南语CE英语(加拿大)IE国际英语PL波兰语UK乌克兰语CF法语(加拿大)IF国际法语PO葡萄牙语UR乌尔都语CS捷克语IN印度尼西亚语PA旁遮普语
(印度、巴基斯坦)ZH中文CT塞浦路斯语IT意大利语RO罗马尼亚语ZU祖鲁语CY威尔士语JA日语RU俄语 DA丹麦语KA格鲁吉亚语(土耳其)SI斯里兰卡语 DU荷兰语KK哈萨克语SK斯洛伐克语 EL希腊语KM柬埔寨语SL斯洛文尼亚语 EN英语(默认值
)KN坎拿达语(印度)SO索马里语 ET爱沙尼亚语KO韩语SP西班牙语 FA波斯语LO老挝语SR塞尔维亚语 安装程序信息
以#{"
RescoView
","
RescoView简体汉化版
"},(
0x11111111
),
4
,
10
,
0
为例说明:
1.#{"
RescoView
","
RescoView简体汉化版
"}
是安装程序标题
如果是单一语言的安装程序,则只写一个标题即可
如果是多语言安装程序,则需要按语言支持区段的语言顺序来依次(就是按&
EN
,
ZH
那个部分的顺序)输入各语言版本下的标题,标题名称用“,
”分割
·单一语言:#{"
RescoView简体汉化版
"}
·多语言:#{"
RescoView
","
RescoView简体汉化版
"}
2.(
0x11111111
)
是SIS安装文件的UID(自定义,SIS安装文件即是安装完成后在C:/system/install/
生成的相应SIS文件)
3.4
,
10
,
0
是程序安装时显示的版本号,4
是主版本号,10
是次版本号,0
是build版本号;4
,
10
,
0
在安装时显示的就是4.10
4.SH
,
NC
是SIS文件选项(此处为非必要参数)
参数值(缩写)参数值(全称)说明SHSHUTDOWNAPPS
关闭应用程序NCNOCOMPRESS
不压缩
5.TYPE=
SISAPP
是SIS文件的类型(如果未指定,则默认为TYPE=
SISAPP
)
参数值(缩写)参数值(全称)说明SASISAPP
标准的安装程序(默认值)SYSISSYSTEM
此安装程序类型包含系统库或共享库文件注册(DLL或OPX文件),这些库文件在主程序卸载时会一并卸载
SOSISOPTION
此安装程序类型安装时有可选组件,选择安装的组件在主程序卸载时会一并卸载
SCSISCONFIG
此安装程序类型可以配置已存在的程序或服务,此类型打包时不应该包含任何新文件。只能用来配置安装或运行过程中的文件显示及增加新组件等等操作。在程序管理列表中不会显示配置程序的卸载,需要手动卸载
SPSISPATCH
此安装程序类型会修复已存在的的程序,在程序管理列表中不会显示修复程序的卸载,需要手动卸载
SUSISUPGRADE
此安装程序类型可以升级已存在的程序,但在程序管理列表中不会显示升级程序的卸载,需要用户手动删除文件或重新关联程序才能撤销升级
兼容性
此区段用来限制程序是否可以被正确安装在目标机型上(比如防止NOKIA Series60的软件安装在UIQ的机型上,避免造成程序错误)
以(
0x101F6F88
),
0
,
0
,
0
,{"
Series60ProductID
","
Series60ProductID
"}
为例说明:
1.(
0x101F6F88
)
是开发
平台SDK的UID,也可以用具体机型的UID来限制
下表给出几个常见机型的平台UID及机型UID(由于能力问题,UID资料
可能存在错误或不完全,请见谅)
以下对Symbian OS
几个版本以及Series60的性能做一下概述
1.屏幕显示象素:176×2082.支持Java (J2ME/MIDP 1.0)及C++开发3.便于简单短周期的开发程序4.提供多样性并强大的应用程序开发框架5.Series60 v2.x版本提供了对Java (J2ME/MIDP 2.0)及界面主题
模式的支持6.Symbian OS
8.0提供了对3G网络的支持
SDK版本UIDSeries60 SDK 0.9
(Symbian 6.1)Series60 SDK 2.0
(Symbian 7.0)Series60 SDK 2.0
(Symbian
8.0)手机型号UID手机型号UID手机型号UIDSeries60 0.9 0x101F6F88Nokia
76500x101F6F87Nokia 66000x101F7963Nokia 66300x101F7964Series60 1.0
0x101F795FNokia 3650/3660/36200x101F7962Nokia 66200x1020216B Series60
1.1 0x101F8201Nokia N-Gage0x101F8A64Nokia 76100x101FD5DBSeries60 1.2
0x101F8202Nokia N-Gage QD Series60 2.00x101F7960Siemens
SX10x101F9071Series60 2.1 0x101F9115Sendo-X0x101FA031Series60 2.2
0x10200BABBenQ P300x101FD279UIQ 2.0 0x101F617B UIQ 2.1 0x101F61CE
2.2
,
0
,
0
是平台的版本号,2
是主版本号,0
是次版本号,0
是build版本号,2
,
0
,
0
显示的版本就是2.0
注:此处的版本号要根据UID来作相应改动。
例:如果UID是0x101F6F88
(Series60 0.9),则主版本号则需要写成0
,次版本号也写0
即可
pkg文件
2010/01/26 10:17 A.M.
转自:http://www.yuelongr.cn/post/880.html
文本警告
在安装时你可以指定一段文本显示,这段文本不会复制到手机上,只是在安装时显示需知信息或相关协议。在pkg中增加如下代码:
"license.txt" - "", FILETEXT, TEXTCONTINUE
FILETEXT
表明这个文件在安装时显示. TEXTCONTINUE提供了一个“继续”按钮用来关闭文本内容,继续安装程序。
你也可以将TEXTCONTINUE
替换为如下选项:
• TEXTSKIP
显示“是/否”选项,如果选择是,那么就会继续安装,如果选择否,那么下段文本就会跳过,但安装还是会正常继续。
• TEXTEXIT
显示“是/否”选项,如果选择是,那么安装就会继续,反之安装就会终止,任何你已安装的文件会被移除。
• TEXTABORT
显示“是/否”选项,如果选择否,那么安装会终止,但是已经安装的将不会删除,删除运行时生成的文件。
多语言文本提示
文本提示的语言可以根据手机缺省语言自己适配,如:
IF (LANGUAGE=2) ; If the language is French, then display mytext.t02
"mytext.t02"-"", FILETEXT, TEXTABORT
ELSEIF (LANGUAGE=3) ; If the language is German, then display mytext.t03
"mytext.t03"-"", FILETEXT, TEXTABORT
ELSE ; Otherwise display mytext.t01
"mytext.t01"-"", FILETEXT, TEXTABORT
ENDIF
上述示例当手机缺省语言为法语时将显示mytext.t02
,当为德语时则显示mytext.t03
,其他语种则为mytext.t01
此外,你需要有相应语言定义在PKG
;Language - standard language definitions
&EN,FR,GE
删除运行时生成的文件
当你要卸载一个sis文件时,卸载程序将会移除所有在安装时已经拷贝到手机上的文件。但那些运行时生成的文件怎么办?
如果程序生成文件名在安装时就要知道,那么需要在pkg文件中增加'null files',pkg中这些文件的格式(与语言无关)如下:
"" - "C/system/data/my_runtime_generated_file", FILENULL
这
里my_runtime_generated_file是个程序生成的文件,FN(FILENULL)参数表示这个文件尚未存在,所以没有包含在sis文
件中。是程序运行时才会生成的,而在程序卸载时将会被删除。注意源文件并不重要,只要为空即可("")。同样注意这个文件在升级为新版时不会被删除,这样
就可以确保一些如ini等存储程序参数的文件不会在升级时丢失。
FILENULL选项在Symbian OS v9.x中并不支持,建议开发者在程序的data cage中生成文件,这样可以在卸载时彻底删除。
如果程序生成文件的数目(或文件名)不可知,这样的情况就比较复杂了。有一个解决方案,sis可以包含一个卸载程序,可以用来查找并删除相关文件。这样程序需要在卸载时自动运行它:
"/epoc32/release/armi/urel/uninst.app" - "!:/system/apps/myapp/uninst.app", RR, RW
RR (RUNREMOVE)参数设置该文件在卸载时自动运行. RW (RUNWAITEND)表明系统将会等待该程序完成后才继续卸载过程。
内嵌SIS文件
你可以包含另一个sis文件,按照如下代码设置:
@”sis file name”,(UID)
例如@”prog1.sis”,(0x12341234)表示安装prog1.sis,它的UID为0x12341234。注意在卸载时,这里内嵌的sis将要等系统判定没有其他程序使用它才会被删除(即没有其他安装组件包括这个内嵌sis在他们的pkg文件中)
在安装或卸载时运行执行文件
你可以在指定可执行文件那行的末尾添加FILERUN (FR)
和RUNINSTALL (RI)
让它在安装时运行
例如:
"/Symbian/9.1/S60_3rd_MR/Epoc32/release/gcce/urel/myprogram.exe"-"!:/sys/bin/myprogram.exe",FR,RI
将会安装myprogram.exe,并在安装过程执行它。这里RUNINSTALL关键字也可以被下列选项取代:
• RUNREMOVE (RR)
指定程序只在卸载时执行它;
• RUNBOTH (RB)
在安装和卸载时都要执行这个程序
上述三个选项最好配以RUNWAITEND (RW)关键字,它指明安装程序要等候该程序执行完毕再继续。如果没有指明这个关键字,那么程序启动后,安装就将继续了。
FILERUN (FR) RUNINSTALL (RI) 选项无法工作于自签名软件
,它需要一个受信签名(Open Signed Online or Open Signed Offline during R&D stage and Symbian Signed when
released),否则程序所需能力将不能得以安装。
必备程序选项
你可以指定一个必备程序选项,它表明系统必须先安装有它,才能继续下面的安装,它的格式如下:
{UID}, Major_Version_#,Minor_Version_#,Build_#,{“Product Name”}
它表明这个组件的UID和名称,以及所需最早版本号,否则将不能继续下面的安装。
例如:
{0x10000123},1,0,0,{"MyDll"}
表明组件名为MyDll,UID为0x10000123,以及最小版本号1.0.0,表明系统至少要安装有该版本。必备程序选项也可以如下,这里表明所需的目标平台:
(0x101F6F88), 0, 0, 0, {"Series60ProductID"}
这里所需的组件就是Series60ProductID, 而版本号至少为0.0.0或更高,都是安装所必需的条件。
从第三版开始,S60平台标识将显示在方括号中,具体如下:
[0x101F7961], 0, 0, 0, {"S60ProductID"}
语言支持
程序可以多个语言版本,而只要一个sis包即可。当用户安装sis文件时,将被提示选择安装语言。要增加语言,就要在你的pkg文件里添加语言支持行。它以&开始,包含下列语言列表中的一个:
AM– US English
AS – Austrian German
AU – Australian English
BF – Belgian French
BL – Belgian Flemish
CS – Czech
DA – Danish
DU – Dutch
EN – UK English
FI – Finnish
FR – French
GE – German
HK – Hong Kong Chinese
HU – Hungarian
IC – Icelandic
IF – International French
IT – Italian
JA – Japanese
NO – Norwegian
NZ – New Zealand
PL – Polish
PO – Portuguese
RO - Romanian
RU – Russian
SF – Swiss French
SG – Swiss German
SK – Slovak
SL – Slovenian
SP – Spanish
SW – Swedish
TC – Taiwan Chinese
TH – Thai
TU – Turkish
ZH – Prc Chinese
下面是一个实例:
&EN, FR, FI
它表明sis包含有英语,法语和芬兰语,如果没有语言项,则&EN是默认的。
手机支持
我们有可能需要指明安装程序只为部分手机支持。如,如果一个程序需要WiFi,那么就只能安装到有wifi的手机。如果到非wifi手机,那么安装将显示一个警告表示程序不兼容。
下列代码演示了程序只能安装到Nokia N80, N93, N93和N95手机上。
[0x200005F9], 0, 0, 0, {"Nokia N80 ID"}
[0x20000600], 0, 0, 0, {"Nokia N93 ID"}
[0x20000605], 0, 0, 0, {"Nokia N93i ID"}
[0x2000060B], 0, 0, 0, {"Nokia N95 ID"}
手机型号的标识可以参考S60 Platform and device identification codes
.
安装特定手机所需文件
可能我们的部分安装文件需要依赖用户手机而定,例如一个游戏开发者可能需要生成一个指定的DLL,以便支持3D加速。那么对没有3D加速的手机,
就只能安装标准的DLL,示例代码如下:
IF (MachineUID=0x20000600) OR (MachineUID=0x2000060B)
; If the device is Nokia N93 or N95, then install files in this block.
"/epoc32/release/armv5/urel/mydll_3d" -"!:/sys/bin/mydll.dll"
ELSE
; Otherwise install any files in this block.
"/epoc32/release/armv5/urel/mydll" -"!:/sys/bin/mydll.dll"
ENDIF
手机标识代码可以在这里找到S60 Platform and device identification codes
.
安装指定平台的文件
可能我们部分安装文件依赖于手机的操作系统,例如第三版FP2就去掉了一些蓝牙连接库,这样的不同导致我们在安装时也需要区别对待,手机平台可以在z:/system/install文件夹中获取:
if exists("z:/system/install/Series60v3.2.sis")
"/Epoc32/release/gcce/UREL/Common_0x123123123_fp2.dll"-"C:/sys/bin/common_0x123123123.dll"
else
"/Epoc32/release/gcce/UREL/Common_0x123123123.dll"-"C:/sys/bin/common_0x123123123.dll"
endif
安装条件
下列函数也可以使用在pkg中:
package()
用来测试一个安装包是否存在;
exists()
用来测试给定文件是否存在
appprop()
获得注册表中的相关属性
DevProp()
函数用来询问手机能力值,注意不是直接提供的名字属性
package()
:如果指定UID已经安装将返回true,否则返回false,下列代码表示如果UID为0x11223344那么将安装foo.txt文件
IF package(0x11223344)
"foo.txt"-"c:/foo.txt"
ENDIF
exists()
: 如果test.txt存在则返回true,将安装新的
if exists("c:/test.txt")
"text/exists.txt"-"!:/private/0x01234567/exists.txt"
appprop()
: 该函数的第一个参数是package UID.第二个参数是获取的propid(property id). 下列代码测试了其他包的能力
;Dependencies
(0x10000003), 1, 2, 3, {"Depend-EN"}
if (appprop(0x10000003,0) = 1)
"text/appprop1.txt"-"!:/Documents/appprop1.txt"
elseif (appprop(0x10000003,0) = 2)
"text/appprop2.txt"-"!:/Documents/appprop2.txt"
endif
DevProp()
: 手机支持能力函数,它提供了直接访问HAL API的能力,即HAL::Get()函数。这个函数可以有条件项使用,用来询问手机的能力。注意这个能力不是名字属性
+(0=1,1=2,3=-1)
if DevProp(1)
"text/appprop1.txt"-"", FT, TC
endif
相关文章推荐
- PKG文件范例详解
- PKG文件范例详解
- PKG文件范例详解
- Symbian S60系列---PKG文件范例详解(一)
- Symbian S60系列---PKG文件范例详解(二)
- SIS 打包 PKG 文件范例详解
- Symbian S60系列---PKG文件范例详解
- 先写个symbian的吧 symbian中的.pkg文件详解
- Symbian OS 打包文件(.pkg)详解及问题总结
- symbian pkg文件详解
- Symbian OS 打包文件(.pkg)详解及问题总结
- Symbian OS 打包文件(.pkg)详解及问题总结
- Symbian OS 打包文件(.pkg)详解及问题总结
- 移动端头部文件详解(二)
- Java中文件读入输出的三种方法详解
- TIFF图像文件格式详解
- Nginx配置文件nginx.conf中文详解(总结)
- Android AndroidManifest 清单文件以及权限详解
- Google Play APK扩展文件机制及开发流程详解
- maven pom 文件详解: