Symbian PKG详解

2024-02-07 05:38
文章标签 详解 symbian pkg

本文主要是介绍Symbian PKG详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Symbian PKG详解

内容:

1 文本警告

2 多语言文本提示

3 删除运行时生成的文件

4 内嵌SIS文件

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

6 必备程序选项

7 语言支持

8 手机支持

9 安装特定手机所需文件

10 安装指定平台的文件

11 安装条件

12 外部链接

13 内部链接

 

1 文本警告

在安装时你可以指定一段文本显示,这段文本不会复制到手机上,只是在安装时显示需知信息或相关协议。在pkg中增加如下代码:

"license.txt" - "", FILETEXT, TEXTCONTIN

FILETEXT 表明这个文件在安装时显示. TEXTCONTIN提供了一个“继续”按钮用来关闭文本内容,继续安装程序。

你也可以将TEXTCONTIN替换为如下选项:

? TEXTSKIP 显示“是/否”选项,如果选择是,那么就会继续安装,如果选择否,那么下段文本就会跳过,但安装还是会正常继续。

? TEXTEXIT 显示“是/否”选项,如果选择是,那么安装就会继续,反之安装就会终止,任何你已安装的文件会被移除。

? TEXTABORT 显示“是/否”选项,如果选择否,那么安装会终止,但是已经安装的将不会删除,删除运行时生成的文件。

 

2 多语言文本提示

文本提示的语言可以根据手机缺省语言自己适配,如:

IF (LANG GE=2) ; If the lang ge is French, then display mytext.t02
"mytext.t02"-"", FILETEXT, TEXTABORT
ELSEIF (LANG GE=3) ; If the lang ge 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

;Lang ge - standard lang ge definitions
&EN,FR,GE

 

3 删除运行时生成的文件

当你要卸载一个sis文件时,卸载程序将会移除所有在安装时已经拷贝到手机上的文件。但那些运行时生成的文件怎么办?

如果程序生成文件名在安装时就要知道,那么需要在pkg文件中增加'null files',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)表明系统将会等待该程序完成后才继续卸载过程。

 

4 内嵌SIS文件

你可以包含另一个sis文件,按照如下代码设置:

@”sis file name”,(UID)

例如@”prog1.sis”,(0x12341234)表示安装prog1.sis,它的UID为0x12341234。注意在卸载时,这里内嵌的sis将要等系统判定没有其他程序使用它才会被删除(即没有其他安装组件包括这个内嵌sis在他们的pkg文件中)

 

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

你可以在指定可执行文件那行的末尾添加FILERUN (FR)和RUNINSTALL (RI)让它在安装时运行

例如:

"/Symbian/9.1/S60_3rd_MR/Epoc32/release/gcce/urel/myprogram.exe"-"!:/sys/bin/myprogram.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),否则程序所需能力将不能得以安装。

 

6 必备程序选项

你可以指定一个必备程序选项,它表明系统必须先安装有它,才能继续下面的安装,它的格式如下:

{UID}, Major_Version_#,Minor_Version_#,Build_#,{“Prod t Name”}

它表明这个组件的UID和名称,以及所需最早版本号,否则将不能继续下面的安装。

例如:

{0x10000123},1,0,0,{"MyDll"}

表明组件名为MyDll,UID为0x10000123,以及最小版本号1.0.0,表明系统至少要安装有该版本。必备程序选项也可以如下,这里表明所需的目标平台:

(0x101F6F88), 0, 0, 0, {"Series60Prod tID"}

这里所需的组件就是Series60Prod tID, 而版本号至少为0.0.0或更高,都是安装所必需的条件。

从第三版开始,S60平台标识将显示在方括号中,具体如下:

[0x101F7961], 0, 0, 0, {"S60Prod tID"}

 

7 语言支持

程序可以多个语言版本,而只要一个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 – Portugse
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是默认的。

 

8 手机支持

我们有可能需要指明安装程序只为部分手机支持。如,如果一个程序需要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.

 

9 安装特定手机所需文件

可能我们的部分安装文件需要依赖用户手机而定,例如一个游戏开发者可能需要生成一个指定的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/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

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

 

10 安装指定平台的文件

可能我们部分安装文件依赖于手机的操作系统,例如第三版FP2就去掉了一些蓝牙连接库,这样的不同导致我们在安装时也需要区别对待,手机平台可以在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

 

11 安装条件

下列函数也可以使用在pkg中:


package()用来测试一个安装包是否存在;
exists()用来测试给定文件是否存在
appprop()获得注册表中的相关属性
DevProp()函数用来询问手机能力值,注意不是直接提供的名字属性

package():如果指定UID已经安装将返回tr,否则返回false,下列代码表示如果UID为0x11223344那么将安装foo.txt文件

IF package(0x11223344)
"foo.txt"-"c:/foo.txt"
ENDIF

exists(): 如果test.txt存在则返回tr,将安装新的

if exists("c:/test.txt")
"text/exists.txt"-"!:/private/0x01234567/exists.txt"

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

;Dependencies
(0x10000003), 1, 2, 3, {"Depend-EN"}
 
if (appprop(0x10000003,0) = 1)
"text/appprop1.txt"-"!:/Documents/appprop1.txt"
elseif (appprop(0x10000003,0) = 2)
"text/appprop2.txt"-"!:/Documents/appprop2.txt"
endif

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

+(0=1,1=2,3=-1)
 
if DevProp(1)
"text/appprop1.txt"-"", FT, TC     /** FT,TA  //提示继续 和 取消; FT, TC  //用户只能选择 继续 **/
endif

 

12 外部链接

http://www.ylongr.cn/index.php/S60_Platform_and_device_identification_codes

 

13 内部链接

[http://www.symbian.com/developer/techlib/v9.2docs/doc_source/toolsandutilities/Installing-ref/PKG_format/index.html

Package file format documentation on Symbian web site].

[http://www.symbian.com/developer/techlib/v9.2docs/doc_source/toolsandutilities/Installing-ref/PKG_format/PKG_lang ges_table.html

Full list of supported lang ges on Symbian web site].

 

[Forum Nokia Wiki ]

这篇关于Symbian PKG详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686655

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

OmniGlue论文详解(特征匹配)

OmniGlue论文详解(特征匹配) 摘要1. 引言2. 相关工作2.1. 广义局部特征匹配2.2. 稀疏可学习匹配2.3. 半稠密可学习匹配2.4. 与其他图像表示匹配 3. OmniGlue3.1. 模型概述3.2. OmniGlue 细节3.2.1. 特征提取3.2.2. 利用DINOv2构建图形。3.2.3. 信息传播与新的指导3.2.4. 匹配层和损失函数3.2.5. 与Super

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹