★☆语言支持☆★
PKG文件的第一行将指明应用程序的语言。每种语言用两个字母表示,如下 :
;Languages
&EN,FR
语言代号:
EN |
UK English |
SG |
Swiss German |
FR |
French |
PO |
Portuguese |
GE |
German |
TU |
Turkish |
SP |
Spanish |
IC |
Icelandic |
IT |
Italian |
RU |
Russian |
SW |
Swedish |
HU |
Hungarian |
DA |
Danish |
DU |
Dutch |
NO |
Norwegian |
BL |
Belgian Flemish |
FI |
Finnish |
AU |
Australian English |
AM |
US English |
BF |
Belgian French |
SF |
Swiss French |
AS |
Austrian German |
IF |
International French |
NZ |
New Zealand |
CS |
Czech |
SK |
Slovak |
PL |
Polish |
SL |
Slovenian |
TC |
Taiwan Chinese |
HK |
Hong Kong Chinese |
ZH |
Prc Chinese |
JA |
Japanese |
TH |
Thai |
|
语言行可以忽略,这样的话,将使用默认的英语。 |
★☆包头☆★
PKG文件的下一个组成部分是包头。它详细什么包的名字,应用程序的UID,版本信息荷包的类型:
#{"DummyLC","BetaLC"},(0x0010D003),1,01,12,TYPE=SISAPP
第一部分{"DummyLC","BetaLC"}是应用程序的名称。必须为语言行的每中语言指定相应名称,DummyLC是应用程序的英文名称;而BetaLC 是法语名称。
接下来是应用程序的UID(0x0010D003)。如果你打算发布你的应用程序,这个值应该从Symbian公司获得(参考为你的应用程序请求UID)。
接下来的3个值,描叙主次和bulid版本号(这个版本是1.01,Build 12)。
最后的一个值可选,它指定SIS的类型,可能的值如下:
SISAPP:包含一个应用(如果没填将被指定)。
SISSYSTEM:包含一个共享/系统组件,像DLL或者OPX,他们可以被其他的应用程序所使用。当最终的应用程序卸载的时候组件也将被卸载。
SISOPTION:包含一个扩展或可选的组件(动态载入代码,数据文件,等)。用户可以选择是否安装或者稍后删除,该组件不依赖主程序而工作。
SISCONFIG:配置一个已经存在的应用程序或服务. 该包不能够包含任何新文件,就算有也只能显示在安装时期,或者添加一个已存在的组件。该包安装后也不会出现在卸载中。
SISPATCH:增补已经存在的组件,它可以被用户卸载。
SISUPGRADE 更新已经存在的组件。该包安装完后也不列在卸载程序中,用户要重装或者卸载必须改变其关联的程序。
★☆产品/平台兼容性☆★
接下来的行指定应用程序目标平台或产品:
(0x101F6F88), 0, 0, 0, {"Series60ProductID","Series60ProductID"}
0x101F6F88 代表是Series 60 v0.9。它支持大多数的的现有S60设备。当然,如果你使用一些特定的API,你将使用响应的代号代替。查看我们的通用产UID页面获得更多代号。
0, 0, 0 是主版本号、次版本号和build号。你不用修改它。
{"Series60ProductID","Series60ProductID"} 是平台识别串。你在S60设备上应该使用“Series60ProductID”。注意:该字符串将重复你语言行所指定的语言中。
SDK版本 |
UID |
Series60 SDK 0.9 (Symbian 6.1) |
Series60 SDK 2.0 (Symbian 7.0) |
Series60 SDK 2.0 (Symbian 8.0) |
手机型号 |
UID |
手机型号 |
UID |
手机型号 |
UID |
Series60 0.9 |
0x101F6F88 |
Nokia 7650 |
0x101F6F87 |
Nokia 6600 |
0x101F7963 |
Nokia 6630 |
0x101F7964 |
Series60 1.0 |
0x101F795F |
Nokia 垃圾0/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 |
三版和二版的PKG文件头不同之处: &ZH #{"理财日历 - JCRst汉化"}, (0xFF00394F),2, 0, 0, IU,TYPE=SA ......................这些和S60v2是一样的 :"LevelUp" %{"bbs.dagamer.com"} ........................这两行是S60v3比v2多出来的 [0x101F7961], 0, 0, 0, {"Series60ProductID"} ..................................这是S60v3的UID和平台信息 以上为S60v3的PKG文件头,下面是安装包中的文件,和S60v2是一样的: "C:"bin"LevelUp_Expense_Calendar_v2"TextFileIndex10.txt"-"", FT, TE "C:"bin"LevelUp_Expense_Calendar_v2"TextFileIndex11.txt"-"", FT, TE ............................ 下面是完整的S60v3 pkg文件: &ZH #{"理财日历 - JCRst汉化"}, (0xFF00394F),2, 0, 0, IU,TYPE=SA :"LevelUp" %{"bbs.dagamer.com"} [0x101F7961], 0, 0, 0, {"Series60ProductID"} "C:"bin"LevelUp_Expense_Calendar_v2"TextFileIndex10.txt"-"", FT, TE "C:"bin"LevelUp_Expense_Calendar_v2"TextFileIndex11.txt"-"", FT, TE "C:"bin"LevelUp_Expense_Calendar_v2"private"10003a3f"import"apps"ExpenseCalendar_reg.RSC"-"!:"private"10003a3f"import"apps"ExpenseCalendar_reg.RSC", FF "C:"bin"LevelUp_Expense_Calendar_v2"private"FF00394F"backup_registration.xml"-"!:"private"FF00394F"backup_registration.xml", FF "C:"bin"LevelUp_Expense_Calendar_v2"resource"apps"ExpenseCalendar.mif"-"!:"resource"apps"ExpenseCalendar.mif", FF "C:"bin"LevelUp_Expense_Calendar_v2"resource"apps"ExpenseCalendar.rsc"-"!:"resource"apps"ExpenseCalendar.rsc", FF "C:"bin"LevelUp_Expense_Calendar_v2"resource"apps"ExpenseCalendarIco.mif"-"!:"resource"apps"ExpenseCalendarIco.mif", FF "C:"bin"LevelUp_Expense_Calendar_v2"resource"help"ExpenseCalendar.hlp"-"!:"resource"help"ExpenseCalendar.hlp", FF "C:"bin"LevelUp_Expense_Calendar_v2"sys"bin"ExpenseCalendar.exe"-"!:"sys"bin"ExpenseCalendar.exe", FF |
★☆显示文字通知☆★
在安装过程中,可以显示一些文字窗口。这里可以显示,程序使用的授权,一些发布通知等(新版本的特性等)
以下是
FILETEXT的使用:
;
"release.txt" - "", FILETEXT, TEXTCONTINUE
上面一行自定了:release.txt文件的内容将在安装过程中被显示。该文件跟PKG文件在同一个目录下(如果不是同一个目录你必须指定路径),在这个例子中,该文件不会被安装在手机上。
TEXTCONTINUE:指定用户只能操作“继续”
TEXTSKIP:出现“是”和“否”文字对话框。如果“是”,对话框消失,继续安装程序,如果“不是”对话框消失,安装继续,接下来的文件和组件将不被安装。
TEXTEXIT:出现“是”和“否”文字对话框。选折“是”继续安装,选折“否”将取消安装,所有的文件将被删除。
TEXTABORT : 出现“是”和“否”文字对话框。选折“是”,对话框取消,安装继续;选择“否”,安装被取消,通常导致部分被安装。
这部分也可
以集成在文件部分。TEXTSKIP选项可以用来询问用户选择文件是否想被安装。
|
参数值(缩写) |
参数值(全称) |
说明 |
文件类型 |
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 |
运行指定文件,等待用户按键确认安装程序的完成 |
★☆语言依存文件☆★应用程序可以包含一些语言依赖的文
件(数据文件,
资源
文件等),你能指定那些依赖的文件被安装:
;
{
""Symbian"6.1"Series60"Epoc32"release"thumb"urel"DummyLC.r01"
""Symbian"6.1"Series60"Epoc32"release"thumb"urel"DummyLC.r02"
}-"!:"system"apps"DummyLC"DummyLC.rsc"
如果用户选择英文,
DummyLC.r01将作为
DummyLC.rsc文件被安装;用户选择法文DummyLC.r02将被安装。有趣的是,仅仅只有一个文件将被安装到手机上,他们总是一个名字,内容和用户语言一致。
如果用户使用了存储卡,"!:" 用来指定,用户能选择的目标位置,如果不想用户选择路径,你可以用绝对路径来替换它(例如:C:)。
在这一步你要注意大括号中的所有内容,用来指定语言选项。
★☆独立语言文件☆★文件中的接下来这部分将不论用户使用什么语言,将安装这些文件:
;
""Symbian"6.1"Series60"Epoc32"release"thumb"urel"DummyLC.app" - "!:"system"apps"DummyLC"DummyLC.app"
""Symbian"6.1"Series60"Epoc32"release"thumb"urel"DummyLC.aif" - "!:"system"apps"DummyLC"DummyLC.aif"
上面的内容将添加SIS文件中的2个文件到手机上,
DummyLC.app 和
DummyLC.aif 他们位于
C:"Symbian"6.1"Series60"Epoc32"release"thumb"urel" 文件夹下面。这些文件将被安装到手机设备的所安装盘符的
"system"apps"DummyLC 目录下。
★☆安装时运行一个文件☆★
在运行一个安装或卸载程序时运行一个文件有时显得非常有用。典型用处:
1. 安装完后启动一个服务(recognizer 注册者也可以用到)。
2. 卸载后做一些清理工作等等。
可以用
FILERUN 命令来实现:
;
""Symbian"6.1"Series60"Epoc32"release"thumb"urel"RunMe.exe" -"!:"system"apps"DummyLC"RunMe.exe",FILERUN,RUNINSTALL
在上面的例子中,RunMe.exe将在安装的过程中自动被执行。
其他的命令:
RUNREMOVE:在卸载的时候执行
RUNBOTH:安装和卸载的时候都执行
★☆安装一个共享组件☆★
一个SIS文件,它包含一个组件可以共享给其他应用程序:
;
@"..".."Common"DLL"Install"newlcdll.sis",(0x1000EB00)
这个共享组件将被包含在应用程序中,和该应用程序一起安装,除非它已经被安装。当有一个应用程序在使用该共享组件时,它都不能被卸载。
接下来的代码也能使用指定的外部组件
(0x1000EB00), 1, 0, 12, {"NewLC DLL","NewLC DLL"}
上面的代码将请求安装已经存在的组件,它的UID是“
0x1000EB00”
版本1.0 Build 12,然而,如果手机上不存在这个DLL,用户将不能安装该安装包。
★☆可选附加组件☆★
如果包含可选附加组件,则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)
★☆运行时产生的文件☆★
应用程序可能也会产生一个数据文件在运行的时候(例如,参数,高分榜等)。
为了确保这些文件在你卸载应用沉许时也被删除,你需要使用
FILENULL 选项:
;
""-"C:"system"apps"DummyLC"DummyLC.ini",FILENULL
注意:在更新版本时,
DummyLC.ini 将不会被删除。这样做是为了确保想ini 这样的文件(记录一些相关参数)在更新时不会被删除。