PKG文件详细解密
;PKG文件头部信息--开始
;语言支持(非必要)
&EN,ZH
;安装程序标题,版本号及SIS文件UID
#{"Language Name 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文件选项(此处为非必要参数)
参数值(缩写) 参数值(全称) 说明
SH SHUTDOWNAPPS
关闭应用程序
NC NOCOMPRESS
不压缩
5. TYPE=SISAPP是SIS文件的类型(如果未指定,则默认为TYPE=SISAPP)
参数值(缩写) 参数值(全称) 说明
SA SISAPP
标准的安装程序(默认值)
SY SISSYSTEM
此安装程序类型包含系统库或共享库文件注册(DLL或OPX文件),这些库文件在主程序卸载时会一并卸载
SO SISOPTION
此安装程序类型安装时有可选组件,选择安装的组件在主程序卸载时会一并卸载
SC SISCONFIG
此安装程序类型可以配置已存在的程序或服务,此类型打包时不应该包含任何新文件。只能用来配置安装或运行过程中的文件显示及增加新组件等等操作。在程序管理列表中不会显示配置程序的卸载,需要手动卸载
SP SISPATCH
此安装程序类型会修复已存在的的程序,在程序管理列表中不会显示修复程序的卸载,需要手动卸载
SU SISUPGRADE
此安装程序类型可以升级已存在的程序,但在程序管理列表中不会显示升级程序的卸载,需要用户手动删除文件或重新关联程序才能撤销升级
兼容性
此区段用来限制程序是否可以被正确安装在目标机型上(比如防止NOKIA Series60的软件安装在UIQ的机型上,避免造成程序错误)
以(0x101F6F88),0,0,0,{"Series60ProductID","Series60ProductID"}为例说明:
1. (0x101F6F88)是开发平台SDK的UID,也可以用具体机型的UID来限制
下表给出几个常见机型的平台UID及机型UID(由于能力问题,UID资料可能存在错误或不完全,请见谅)
以下对Symbian OS几个版本以及Series60的性能做一下概述
1.屏幕显示象素:176×208
2.支持Java (J2ME/MIDP 1.0)及C++开发
3.便于简单短周期的开发程序
4.提供多样性并强大的应用程序开发框架
5.Series60 v2.x版本提供了对Java (J2ME/MIDP 2.0)及界面主题模式的支持
6.Symbian OS 8.0提供了对3G网络的支持
手机型号 UID 手机型号 UID 手机型号 UID
Series60 0.9 0x101F6F88 Nokia 7650 0x101F6F87 Nokia 6600 0x101F7963 Nokia 6630 0x101F7964
Series60 1.0 0x101F795F Nokia 3650/3660/3620 0x101F7962 Nokia 6620 0x1020216B
Series60 1.1 0x101F8201 Nokia N-Gage 0x101F8A64 Nokia 7610 0x101FD5DB
Series60 1.2 0x101F8202 Nokia N-Gage QD
Series60 2.0 0x101F7960 Siemens SX1 0x101F9071
Series60 2.1 0x101F9115 Sendo-X 0x101FA031
Series60 2.2 0x10200BAB BenQ P30 0x101FD279
UIQ 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即可
提示:
·如果只是希望安装在某一特定机型上(比如N-Gage),则UID处写N-Gage的UID,而平台版本处写0,0,0即可
·如果希望安装程序能在多个机型上安装(向老版本机型兼容),则UID处写最老那个机型的平台版本的UID,平台版本号处参照上边第2条写
例:假使希望可以安装在N7650,N3650,N-Gage,N-Gage QD,N6600上,则写为(0x101F6F88),0,0,0
3. {"Series60ProductID","Series60ProductID"}是平台类型校验字符串,用来目标机器的平台类型(UIQ或Series或其他类型)
平台类型 字符串
Nokia Series60 Series60ProductID
UIQ UIQ20PlatformProductID
如果是单一语言的安装程序,则只写一个字符串即可
如果是多语言安装程序,则需要按语言支持区段的语言顺序来依次(就是按&EN,ZH那个部分的顺序)输入各语言版本下的校验字符串,字符串间用“,”分割
·单一语言:{"Series60ProductID"}
·多语言:{"Series60ProductID","Series60ProductID"}
--------------------------------------------------------------------------------
Series60 0.9 & 1.x:包括N7650,N3650,N-GAGE,N-GAGE QD
Series60 2.x:包括N6600和N7610
Series60 0.9 & 1.x & Series60 2.x:包括以上所有机型
所以如果上边的暂时不太懂的话,那就照以下两种类型情况下的例子改写即可
Series60 0.9 & 1.x:(0x101F6F88),0,0,0,{"Series60ProductID","Series60ProductID"}
Series60 2.x:(0x101F7960),2,0,0,{"Series60ProductID","Series60ProductID"}
Series60 0.9 & 1.x & Series60 2.x:(0x101F6F88),0,0,0,{"Series60ProductID","Series60ProductID"}
文件的安装
格式为 "PCSourceFile(PC端源文件)"-"MobileDestFile(手机端目标文件)",文件类型,操作参数1,操作参数2
以 "D:/sis/files/MyApp.app"-"!:/System/Apps/MyApp/MyApp.app",文件类型,操作参数1,操作参数2 为例
1. PC端源文件可以用相对路径(相对于pkg文件所在路径)也可以用绝对路径
例:假使你的PC端pkg文件在D:/sis,需要打包的PC端文件都在D:/sis/files
相对路径:files/MyApp.app
绝对路径:D:/sis/files/MyApp.app
2. 手机端目标文件就是指定文件将被安装在手机的哪个目录中。
! 代表目标盘符,如果有文件必须安在手机的 C 盘的话,改为 C 即可
例1:!:/System/Apps/MyApp/MyApp.app
例2:C:/System/Apps/MyApp/MyApp.app
3. 文件类型,操作参数1,操作参数2,如果文件类型未指定(则默认为FILE)时可以省略操作参数;如果操作参数1未指定时(则默认为RUNINSTALL)操作参数2可以省略
例1:"D:/sis/files/MyApp.app"-"!:/System/Apps/MyApp/MyApp.app",文件类型,操作参数1,操作参数2
例2:"D:/sis/files/MyApp.app"-"!:/System/Apps/MyApp/MyApp.app",文件类型,操作参数1
例3:"D:/sis/files/MyApp.app"-"!:/System/Apps/MyApp/MyApp.app",文件类型
例4:"D:/sis/files/MyApp.app"-"!:/System/Apps/MyApp/MyApp.app"
参数值(缩写) 参数值(全称) 说明
文件类型 FF FILE 标准程序文件(默认值)
FT FILETEXT 文本文件,如果指定了文件为文本类型,则在安装过程中会显示一个窗口来显示文本信息。
如果文本信息窗口的类型不指定,则默认为TEXTCONTINUE
如果指定了文件为文本文件,则手机端目标路径处可以选择留空
(如果你希望该文本文件安装到手机上的话则需填写路径)
例1: "D:/sis/files/Readme.txt"-"!:/System/Apps/MyApp/Readme.txt",FT
例2: "D:/sis/files/Readme.txt"-"",FT
FN FILENULL 卸载指定文件,该类型不需要源文件路径参数
实例(安装时卸载指定路径下的setting.ini文件:
""-"!:/System/Apps/MyApp/setting.ini",FN
FM FILEMIME 指定安装文件的MIME类型,我们一般用不到,不做说明
FR FILERUN 指定是运行文件。文件可以是exe文件,app文件或文本文档
如果文件被指定了非FILERUN的类型,则可根据需要省略操作参数1和操作参数2
文本信息窗口类型 TC TEXTCONTINUE
只显示一个确认按钮,用户按下后会继续程序的安装
TS TEXTSKIP
显示一个确认按钮和一个取消按钮,用户按下确认按钮会继续安装
按下取消也会继续完成安装程序(但pkg文件内此文件行以下指定的安装文件将不会被安装)
TE TEXTEXIT
显示一个确认按钮和一个退出按钮,用户按下确认按钮会继续安装
按下退出按钮则会退出安装程序(已安装的文件会自动删除)
TA TEXTABORT
显示一个确认按钮和一个退出按钮,用户按下确认按钮会继续安装
按下退出按钮则会退出安装程序(之前已安装的文件不会被删除)
操作参数1 RI RUNINSTALL
指定文件在安装时运行
RR RUNREMOVE
指定文件在卸载时被运行
RB RUNBOTH
指定文件在安装时运行,卸载时也运行
操作参数2 RS RUNSENDEND
运行指定文件,自动运行指定文件,运行完后自动关闭文件来完成安装程序(只有指定为操作参数1为RUNINSTALL参数时才能使用此参数)
RW RUNWAITEND
运行指定文件,等待用户按键确认安装程序的完成
4. 安装文件的多语言形式,手机端目标文件不变,PC端源文件按照如下格式书写即可
PC端源文件的顺序要按照语言顺序来依次(就是按&EN,ZH那个部分的顺序)书写(PC端源文件可用空格或换行分隔),字符串间用“,”分割
书写格式:{
"D:/sis/files/MyApp.rEN"
"D:/sis/files/MyApp.rZH"
}-"!:/System/Apps/MyApp/MyApp.rsc"
必要组件校验
此段是校验指定的程序(每个程序在安装时都会在手机端C:/System/install下生成一个同安装程序文件名的SIS文件,也就是校验这个SIS文件是否存在)是否存在,如果不存在,则pkg文件内,此行以下的安装文件将不会被安装
例:(0x123456789),1,1,0,{"C Library","C语言运行库"}
1. 0x123456789是指定的SIS文件的UID(用SeleQ查看APP文件属性显示的UID1;用SmartFileMan显示的UID1)
2. 1,1,0是用于校验到SIS文件不存在时,错误提示中显示的版本号(假设C Library的SIS文件不存在,则会提示“C Library 1.1不存在,请安装安装后再安装本程序”)。此版本号不限制文件的校验。
3. {"C Library","C语言运行库"}是用于校验到SIS文件不存在时,错误提示中显示的组件标题。
如果是多语言安装程序,则需要按语言支持区段的语言顺序来依次(就是按&EN,ZH那个部分的顺序)输入各语言版本下的标题,标题名称用“,”分割。
可选附加组件
如果包含可选附加组件,则SIS文件类型需要相应变成TYPE=SISOPTION
单语言: !({"Add-on 1 (20kb)"},{"Add-on 2 (20kb)"})
Add-on 1 (20kb)是第1个附加组件的显示标题,Add-on 2 (20kb)是第2个附加组件的显示标题;依此类推可设置多个附加组件
多语言: !({"Add-on 1 (20kb)","附件1 (20kb)"},{"Add-on 2 (20kb)","附件2 (20kb)"})
Add-on 1 (20kb)是第1个附加组件的第1种语言的显示标题,附件1 (20kb)是第1个附加组件的第2种语言的显示标题
Add-on 2 (20kb)是第2个附加组件的第2种语言的显示标题,附件2 (20kb)是第2个附加组件的第2种语言的显示标题
依此类推可设置多个附加组件;多语言安装程序需要按语言支持区段的语言顺序来依次(就是按&EN,ZH那个部分的顺序)输入各语言版本下的标题,标题名称用“,”分割。
条件判断
如果安装程序内包含可选附加组件,则需要此区段的信息,反之则省略
!({"Add-on 1 (20kb)"},{"Add-on 2 (20kb)"})
IF option1
"PCSourceFile/addon/MyPic1.gif"-"!:/System/Apps/MyApp/addon/MyPic1.gif"
ENDIF
IF option2
"PCSourceFile/addon/MyPic2.gif"-"!:/System/Apps/MyApp/addon/MyPic2.gif"
ENDIF
IF option1和ENDIF之间的信息是选择Add-on 1 (20kb)后的安装结果
IF option2和ENDIF之间的信息是选择Add-on 2 (20kb)后的安装结果
依此类推,有几个附件就按照数字的顺序写几个IF option(Add-on 1,Add-on 2 ,Add-on 3 相应的应该有IF option1,IF option2,IF option3)
附加SIS文件
在SIS安装程序中附加的SIS安装程序,可以用于条件判断语句之内(如果在条件判断语句之外则会被自动安装)
例: @"D:/sis/files/AutoStart.sis",(0x12345678)
D:/sis/files/AutoStart.sis是PC端SIS源文件的位置
0x12345678是该SIS文件的UID(用SeleQ查看APP文件属性显示的UID1;用SmartFileMan显示的UID1)