symbian pkg

  文本警告

  在安装时你可以指定一段文本显示,这段文本不会复制到手机上,只是在安装时显示需知信息或相关协议。在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中这些文件的格式(与语言无关)如下:

  "" - "Csystemdatamy_runtime_generated_file", FILENULL

  这里my_runtime_generated_file是个程序生成的文件,FN(FILENULL)参数表示这个文件尚未存在,所以没有包含在sis 文件中。是程序运行时才会生成的,而在程序卸载时将会被删除。注意源文件并不重要,只要为空即可("")。同样注意这个文件在升级为新版时不会被删除,这样就可以确保一些如ini等存储程序参数的文件不会在升级时丢失。

  FILENULL选项在Symbian OS v9.x中并不支持,建议开发者在程序的data cage中生成文件,这样可以在卸载时彻底删除。

  如果程序生成文件的数目(或文件名)不可知,这样的情况就比较复杂了。有一个解决方案,sis可以包含一个卸载程序,可以用来查找并删除相关文件。这样程序需要在卸载时自动运行它:

  "epoc32 eleasearmiureluninst.app" - "!:systemappsmyappuninst.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)让它在安装时运行

  例如:

  "Symbian9.1S60_3rd_MREpoc32 eleasegcceurelmyprogram.exe"-"!:sysinmyprogram.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 eleasearmv5urelmydll_3d" -"!:sysinmydll.dll"

  ELSE

  ; Otherwise install any files in this block.

  "epoc32 eleasearmv5urelmydll" -"!:sysinmydll.dll"

  ENDIF

  手机标识代码可以在这里找到S60 Platform and device identification codes.

  安装指定平台的文件

  可能我们部分安装文件依赖于手机的操作系统,例如第三版FP2就去掉了一些蓝牙连接库,这样的不同导致我们在安装时也需要区别对待,手机平台可以在 z:systeminstall文件夹中获取:

  if exists("z:systeminstallSeries60v3.2.sis")

  "Epoc32 eleasegcceURELCommon_0x123123123_fp2.dll"-"C:sysincommon_0x123123123.dll"

  else

  "Epoc32 eleasegcceURELCommon_0x123123123.dll"-"C:sysincommon_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: est.txt")

  "textexists.txt"-"!:privatex01234567exists.txt"

 

  appprop(): 该函数的第一个参数是package UID.第二个参数是获取的propid(property id). 下列代码测试了其他包的能力

  ;Dependencies

  (0x10000003), 1, 2, 3, {"Depend-EN"}

  if (appprop(0x10000003,0) = 1)

  "textappprop1.txt"-"!:Documentsappprop1.txt"

  elseif (appprop(0x10000003,0) = 2)

  "textappprop2.txt"-"!:Documentsappprop2.txt"

  endif

  DevProp(): 手机支持能力函数,它提供了直接访问HAL API的能力,即HAL::Get()函数。这个函数可以有条件项使用,用来询问手机的能力。注意这个能力不是名字属性

  +(0=1,1=2,3=-1)

  if DevProp(1)

  "textappprop1.txt"-"", FT, TC

  endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值