如何创建sis文件——概叙

来源:互联网 发布:淘宝上的点痣笔有用吗 编辑:程序博客网 时间:2024/04/30 13:45

如何创建sis文件——概叙
SIS文件是一种标准,它是方便的发布Symbian 应用程序的方式:

1. 最终用户可以利用Symbian 操作系统手机中所携带的安装程序或者从电脑的连通性软件也进行安装/卸载SIS包。
2. SIS文件使用内嵌机制来部署共享资料库和应用升级。
3. SIS文件格式紧密 (采用了zlib 压缩技术)

SIS文件通过计算机中的makesis工具生成,在所有的C++ SDK中可以使用:
创建SiS文件流程图

makesis工具有两个输入:
应用文件(可执行文件,源文件,数据文件等)
PKG文件,其包含关于如何创建SIS文件包的说明。

PKG文件是正确创建包的关键。它可以通过SISAR工具自动生成或手工写入。当你使用NOKIA应用程序向导创建工程时,向导将创建一个默认的PKG文件(文件放置在 %project directory%/install目录下)。

Makesis的用法

创建SIS文件的命令行语句如下:


CODE:
makesis [flags] source [destination]

| Flags | Meaning | Comment |
| -v | Verbose | 打印输出到屏幕|
| -h | Help |显示使用信息|
| -s | Stub | 为包中所定义的每种语言生成剩余的SIS文件,扩展名为.sxx,xx 为语言编码,如.s10|
| -p password | Password | 当用加密的密钥文件来标记SIS文件时指定的密码 |
| -d directory | Directory |如果没有指定完整的路径时可用该路径搜索source文件|

参数source为PKG文件名,并且是必填参数。
参数destination 为目标文件名。如果没有被指定,他将使用PKG文件名,并用sis扩展名来创建。

PKG文件概叙

PKG文件是一个文本文件,它包含了应用程序或文件的安装信息,由以下部分组成:
-所支持的语言
-头文件,包括被安装组件名称和创建的版本信息。
-产品/平台版本的兼容性
-包的签名资料(可选)
-包的详细信息

包的详细信息包括:
-选择行
-条件块
-安装的独立语言文件
-language-dependent文件,只有一种将被安装
-性能行
-所需组件
-嵌入的SIS文件
-注释

下面用一个简单的PKG文件为例介绍各个选项:


CODE:
;
; Installation file for DummyLC application
; (c) NewLC 2003
;
;Languages
&EN,FR
;
; UID is the app's UID
;
#{"DummyLC","BetaLC"},(0x0010D003),1,01,12,TYPE=SISAPP
;
;Supports Series 60 v 0.9
(0x101F6F88), 0, 0, 0, {"Series60ProductID","Series60ProductID"}
;
; Display Release notes
;
"release.txt" - "", FILETEXT, TEXTCONTINUE
;
; Install language dependent data
;
{
"/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"
;
; Files to install
;
"/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"
;
; Install and run a server
;
"/Symbian/6.1/Series60/Epoc32/release/thumb/urel/RunMe.exe"         -"!:/system/apps/DummyLC/RunMe.exe",FR,RI
;
; Install shared component
;
@"../../Common/DLL/Install/newlcdll.sis",(0x1000FD000)
;
; Make sure the configuration file is removed on uninstall
;
""-"C:/system/apps/DummyLC/DummyLC.ini",FN


如何创建sis文件——PKG文件格式


语言支持

PKG文件的第一行将指明应用程序的语言。每种语言用两个字母表示,如下:


CODE:
;Languages
&EN,FR

语言代号:
EN  英语    PO  葡萄牙语  
FR  法语    SP  西班牙语  
GE  德语    RU  俄语  
IT  意大利语    DU  荷兰语  
SW  瑞典语    DA  丹麦语  
FI  芬兰语    NO  挪威语  

更多的代码可以参考SDK

语言行可以忽略,这样的话,将使用默认的英语。

包头

PKG文件的下一个组成部分是包头。它详细什么包的名字,应用程序的UID,版本信息荷包的类型:

CODE:
#{"DummyLC","BetaLC"},(0x0010D003),1,01,12,TYPE=SISAPP

第一部分{"DummyLC","BetaLC"}是应用程序的名称。必须为语言行的每中语言指定相应名称,DummyLC是应用程序的英文名称;而BetaLC 是法语名称。

接下来是应用程序的UID(0x0010D003)。如果你打算发布你的应用程序,这个值应该从Symbian公司获得(参考为你的应用程序请求UID)。

The next three values represent the major, minor , build version number (we have here version 1.01, build 12).
接下来的3个值,描叙主次和bulid版本号(这个版本是1.01,Build 12)。

最后的一个值可选,它指定SIS的类型,可能的值如下:
SISAPP:包含一个应用(如果没填将被指定)。
SISSYSTEM:包含一个共享/系统组件,像DLL或者OPX,他们可以被其他的应用程序所使用。当最终的应用程序卸载的时候组件也将被卸载。
SISOPTION:包含一个扩展或可选的组件(动态载入代码,数据文件,等)。用户可以选择是否安装或者稍后删除,该组件不依赖主程序而工作。
SISCONFIG:配置一个已经存在的应用程序或服务. 该包不能够包含任何新文件,就算有也只能显示在安装时期,或者添加一个已存在的组件。该包安装后也不会出现在卸载中。
SISPATCH:增补已经存在的组件,它可以被用户卸载。
SISUPGRADE  更新已经存在的组件。该包安装完后也不列在卸载程序中,用户要重装或者卸载必须改变其关联的程序。

产品/平台兼容性

接下来的行指定应用程序目标平台或产品:

CODE:
(0x101F6F88), 0, 0, 0, {"Series60ProductID","Series60ProductID"}

0x101F6F88 代表是Series 60 v0.9。它支持大多数的的现有S60设备。当然,如果你使用一些特定的API,你将使用响应的代号代替。查看我们的通用产UID页面获得更多代号。

0, 0, 0 是主版本号、次版本号和build号。你不用修改它。

{"Series60ProductID","Series60ProductID"} 是平台识别串。你在S60设备上应该使用“Series60ProductID”。注意:该字符串将重复你语言行所指定的语言中。

显示文字通知

在安装过程中,可以显示一些文字窗口。这里可以显示,程序使用的授权,一些发布通知等(新版本的特性等)
以下是FILETEXT的使用:

CODE:
;
; Display new features
;
"release.txt" - "", FILETEXT, TEXTCONTINUE

上面一行自定了:release.txt文件的内容将在安装过程中被显示。该文件跟PKG文件在同一个目录下(如果不是同一个目录你必须指定路径),在这个例子中,该文件不会被安装在手机上。

TEXTCONTINUE:指定用户只能操作“继续”
TEXTSKIP:出现“是”和“否”文字对话框。如果“是”,对话框消失,继续安装程序,如果“不是”对话框消失,安装继续,接下来的文件和组件将不被安装。
TEXTEXIT:出现“是”和“否”文字对话框。选折“是”继续安装,选折“否”将取消安装,所有的文件将被删除。
TEXTABORT : 出现“是”和“否”文字对话框。选折“是”,对话框取消,安装继续;选择“否”,安装被取消,通常导致部分被安装。
这部分也可以集成在文件部分。TEXTSKIP选项可以用来询问用户选择文件是否想被安装。

语言依存文件
应用程序可以包含一些语言依赖的文件(数据文件,资源文件等),你能指定那些依赖的文件被安装:

CODE:
;
; Install language dependent data
;
{
"/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:)。

在这一步你要注意大括号中的所有内容,用来指定语言选项。

独立语言文件
文件中的接下来这部分将不论用户使用什么语言,将安装这些文件:

CODE:
;
; Files to install
;
"/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 命令来实现:

CODE:
;
; Install and run an exe
;
"/Symbian/6.1/Series60/Epoc32/release/thumb/urel/RunMe.exe"         -"!:/system/apps/DummyLC/RunMe.exe",FILERUN,RUNINSTALL

在上面的例子中,RunMe.exe将在安装的过程中自动被执行。

其他的命令:
RUNREMOVE:在卸载的时候执行
RUNBOTH:安装和卸载的时候都执行

安装一个共享组件

一个SIS文件,它包含一个组件可以共享给其他应用程序:

CODE:
;
; Install shared component
;
@"../../Common/DLL/Install/newlcdll.sis",(0x1000EB00)

这个共享组件将被包含在应用程序中,和该应用程序一起安装,除非它已经被安装。当有一个应用程序在使用该共享组件时,它都不能被卸载。

我们的EzBoot 是共享组件的一个很好的例子。

接下来的代码也能使用指定的外部组件

CODE:
(0x1000EB00), 1, 0, 12, {"NewLC DLL","NewLC DLL"}

上面的代码将请求安装已经存在的组件,它的UID是“0x1000EB00”版本1.0 Build 12,然而,如果手机上不存在这个DLL,用户将不能安装该安装包。

运行时产生的文件

应用程序可能也会产生一个数据文件在运行的时候(例如,参数,高分榜等)。

为了确保这些文件在你卸载应用沉许时也被删除,你需要使用 FILENULL 选项:

CODE:
;
; Make sure the configuration file is removed on uninstall
;
""-"C:/system/apps/DummyLC/DummyLC.ini",FILENULL

注意:在更新版本时,DummyLC.ini 将不会被删除。这样做是为了确保想ini 这样的文件(记录一些相关参数)在更新时不会被删除。

 

当有.pkg文件打包成.sis或者.sisX文件时,

在.pgk文件加上 FT,TA 例如:

#{"Application with Licence"},(0x10004299),1,0,0,TYPE=SISAPP
"../text/test.txt"-"",FT,TA  ///////这里就是要加的FT,TA 后面那个""号没有目录,因为不需要安装,文本文件要用UTF-8编码

 

 

原创粉丝点击