pkg 高级选项功能介绍

在安装过程中你可以指定一个文件文件显示给用户。这个文件本身不会被拷贝到目标设备,用于显示基本的自述信息或许可协议。为此,添加下行到pkg文件:

"license.txt" - " ", FILETEXT, TEXTCONTINUE

FILETEXT 指出在安装期间显示该文件。TEXTCONTINUE 会提供一个可以关闭这个文本文件的继续按钮然后继续安装。代替TEXTCONTINUE ,你可以指定为下面之一:

TEXTSKIP 显示一个是/否选项。 若选择是,安装继续。 若选择否,则跳过下一段说明,安装仍正常继续向前。

TEXTEXIT 显示一个是/否选项。 若选择是,安装继续。若选择否, 安装停止并删除任何已安装文件。

TEXTABORT 显示一个是/否选项。但当选择否时,安装只停止,不删除任何已安装文件。移除运行时生成的文件。

 

多语言文字告示

文字告示的语言能被自定义取决于设备的缺省语言。例如:

IF  (LANGUAGE=2) ; 若语言是法语,则显示mytext.t02
"mytext.t02"-"", FILETEXT, TEXTABORT
ELSEIF (LANGUAGE=3) ; 若语言是德语,则显示mytext.t03
"mytext.t03"-"", FILETEXT, TEXTABORT
ELSE ; 否则显示mytext.t01
"mytext.t01"-"", FILETEXT, TEXTABORT
ENDIF

当设备上的缺省语言是法语时上例将显示mytext.t02 ;德语时mytext.t03 ;任何其它语言时mytext.t01 。

顺便提及,你也必须在PKG中定义语言:

;Language - standard language definitions
&EN,GE,FR

移除运行时生成的文件

当经由程序的sis文件卸载程序时,卸载程序会移除所有被安装程序按照pkg文件中的文件说明行拷贝到电话的那些文件。但在运行时生成的文件又该如何呢?

若应用程序创建的文件名在安装时已知,那么它们必须作为'空文件(null files)'添加到.pkg文件。在.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文件,如下面的代码:

@”sis file name”,(UID)

例如: @”prog1.sis”,(0x12341234) prog1.sis,具有UID 0x12341234,在碰到这行时安装。注意: 在卸载时,这个嵌入的sis直到系统判断出没有其他当前已安装部件使用它(也就是,没有其他已安装部件在其pkg文件也包括该sis)才会被卸载。

在安装或卸载时运行可执行文件

你能指定要运行的可执行文件,通过在可执行文件描述行尾部添加FILERUN (FR)RUNINSTALL (RI) 关键字。

例如:

"/Symbian/6.1/Series60/Epoc32/release/armi/urel/myprogram.exe"-
"!:system/programs/myprogram.exe",FR,RI

将安装myprogram.exe并在安装期间执行。RUNINSTALL关键字可用下面的任何一个替代:

RUNREMOVE (RR) 使得只在卸载期间才执行。

RUNREMOVE (RR) 使得可执行文件在安装和卸载期间都执行。

这三个选项中任一个可进一步与关键字 RUNWAITEND (RW)配合使用,RUNWAITEND (RW)使得安装等到执行结束方可继续。若未指定,那么安装将在可执行文件启动后马上继续。

依赖行(Requisite Lines)

你可以用依赖行指出一个特定的部件必须已经安装当前的安装方能继续。使用下面的格式:

{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的部件,其UID为0x101F6F88、版本号0.0.0或更高,必须存在安装方能继续。

从S60第三版开始,S60产品Id必须写在方括弧中。例子:

[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"}

设备Id列表可在S60 Platform and device identification codes 中找到。

安装设备相关文件

安装依赖于用户设备的文件是可能的。例如,游戏开发人员可以为支持3D加速器的设备创建一个特殊的DLL。对于无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

设备Id列表可在S60 Platform and device identification codes 中找到。

 

安装平台相关文件

安装依赖于操作系统的文件是可能的。例如,3rd FP2版去掉了一些Bluetooth库,因此必须安装不同的文件。通过检查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

你可能感兴趣的:(File,dll,语言,Symbian,Nokia,平台)