SIS打包教程


★☆语言支持☆★
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
运行指定文件,自动运行指定文件,运行完后自动关闭文件来完成安装程序(只有指定为操作参数1RUNINSTALL参数时才能使用此参数)
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.appDummyLC.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 option1ENDIF之间的信息是选择Add-on 1 (20kb)后的安装结果
IF option2ENDIF之间的信息是选择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 这样的文件(记录一些相关参数)在更新时不会被删除。

你可能感兴趣的:(教程)