怎么打开pkg文件?

怎么打开pkg文件?,第1张

pkg文件

pkg文件也就是安装包配置文件,是制作Symbian OS安装程序的核心部分。它包含了制作安装文件所需要的全部信息。为了生成.sis文件,必须首先编写.pkg文件。因此制作Symbian程序安装文件的过程,实际上主要就是编写pkg文件的过程。pkg文件像Symbian的资源文件一样,有自己完整的语法体系,掌握了pkg文件的语法,就基本上掌握了制作安装程序的大部分知识,所以熟悉pkg文件的结构,对于制作安装程序来说,是非常重要的。

举例(HelloWorld.pkg):

Installation file for HelloWorld application

Languages

&EN

UID is the app's UID

#{"HelloWorld"},(0x0D0A2843),1,0,0

Supports Series 60 v 2.0

This line indicates that this installation is for the Series 60 platform v2.0

This line must appear _exactly_ as shown below in the sis file

If this line is missing or incorrect, the sis file will not be able

to be installed on Series 60 v2.0 platforms

(0x101F7960), 0, 0, 0, {"Series60ProductID"}

Four files to install

Symbols set up for the source location are Carbide.c++ specific symbols

"$(EPOCROOT)epoc32\release\$(PLATFORM)\$(TARGET)\HelloWorld.app" -"!:\system\apps\HelloWorld\HelloWorld.app"

"$(EPOCROOT)epoc32\data\z\system\apps\HelloWorld\HelloWorld.rsc" -"!:\system\apps\HelloWorld\HelloWorld.rsc"

"$(EPOCROOT)epoc32\data\z\system\apps\HelloWorld\HelloWorld_caption.rsc" -"!:\system\apps\HelloWorld\HelloWorld_caption.rsc"

"$(EPOCROOT)epoc32\data\z\system\apps\HelloWorld\HelloWorld.aif" -"!:\system\apps\HelloWorld\HelloWorld.aif"

这个pkg文件是完整的,只要把文件目录适当调整一下,就可以可以使用了。

下面对这个文件的各个部分依次做一些解释说明:

·以分号开始的行,是注释。这些注释主要是给开发人员看的,生成器会忽洞咐册略它们。

·&EN,表示安装程序使用的语言。EN表示使用美国英语,具体的代码的意义可以在SDK中查到,这里不详细列出。sis文件支持多语言安装,可以在这里进行设置,比如,&EN,FR,IT,表示是多语言的。对于多语言的安装程序,有一些语法和规则与其对应,具体的使用方法请查阅SDK。如果你只是希望可以做出一个安装程序,那么使用&EN就可以,不过需要保证后面出现的字符串部分使用英文字母。

·#{"HelloWorld"},(0x0D0A2843),1,0,0。这是标准Symbian SIS文件的头部。所有的pkg都必须包含这行,而且必须在语言设置的后面。其中HelloWorld是程序的名字,在安装过程中,可能会使用。0x0D0A2843,是所开发程序的UID,具体点说就是mmp文件中UID项的后面那个数字。接下来的数字,依次是主版本号,副版本号,和创建号,这些号码用于安装程序的版本控制。

·(0x101F7960), 0, 0, 0, {"Series60ProductID"}。这一句说明了这个程序在安装之前需纳宏要准备的组件,实简陪际上就是要求必须是Series60的平台。如果还需要其它的组件,也需要在这里说明。0x101F7960,是组件的UID,它其实表示的是S60 2.0的平台,对于S60 2.1的平台,应该是0x101F9115。0,0,0分别是主副版本号和创建号,Series60ProductID则是当需要显示的时候用于向用户显示的说明文字。

·最后就是实际 *** 作的语句了。第一个双引号中的是文件的源位置,它只的是编译后的文件在PC中的位置。你可以使用绝对位置,也可以像例子那样使用相对位置。第二个双引号中的是文件在目标机器中的位置。“!:”表示由用户来选择安装在哪个驱动器下面,如果不想由用户指定,可以使用“C:”,表示安装在电话的C驱动下面。这两行语句表示的意思就是将指定位置的文件复制到电话的指定位置中。还有很丰富的语法,请查看S60的SDK。

http://bbs.myjxtx.com/simple/index.php?t14140.html

Unix/Linux下的软件包生成器----EPM

摘要

在Unix/Linux环境下生成软件发行包是一个挑战,特别是你要发布一个跨多个平台的软件时,这项工作会变得更加艰难。因为每个 *** 作系统都有自己的软件包格式,而且每个 *** 作系统的软件开发环境都有不同的需求和实现。

(2002-08-22 11:01:14)

--------------------------------------------------------------------------------

By Wing, 出处:sword_martin

在Unix/Linux环境下生成软件发行包是一个挑战,特别是你要发布一个跨多个平台的软件时,这项工作会变得更加艰难。因为每个 *** 作系统都有自己的软件包格式,而且每个 *** 作系统的软件开发环境都有不同的需求和实现。

解决这个难题的方法之一是采用ESPPackageManager(EPM)-----软件包管理软件,它除了支持自身的“可移植(portable)”发行格式外,还支持厂家指定的发行格式,这样你就几乎可以为所有的UNIX/Linux平台的 *** 作系统生成安装软件包了。

EPM软件包管理软件是由ESP公司开发的,如果ESP---EasySoftwareProducts公司您还不是很熟悉的话,那么CUPS----unix环境下的通用打印系统您可就不能不知道了,EPM同CUPS一样都是为了方便用户在Unix/Linux环境下的使用:CUPS提供了一个Unix/Linux环境下的通用的打印系统,EPM则使得在Unix/Linux环境下软件安装包的生成更加简易方便。EPM的初期版本支持一种被称为“可移植”的软件包发行格式,它与任何特定的 *** 作系统或软件包生成软件的格式都不兼容,后来在EPM的第二个版本中又加入了生成支持某个特定Unix/Linux发行版本的功能。

一、EPM功能强大

现有开放源码的软件包生成系统有很多:在Linux下有RedHatPackageManager(RPM)及DebianPackagingsoftware(dpkg及dselect),在商业UNIX环境下有各个厂商支持的软件包生成系统。

但所有这些类型的格式都有一个缺点:不支持通用的软件标准文件格式。也就是说,Debian类型的软件包与Solaris的pkg软件包相互不兼容。这就使得管理多 *** 作系统的软件包十分困难。

以上几种格式均支持二进制的发行版本。RPM和Debian格式还支持源代码发行版本,用户可以重新编译进行安装。只有商业的UNIX格式支持patch----打补丁的发行格式,所以对RPM和岩薯Debian生成的软件包,升级时必须更新全部的文件。除了Solaris的Pkg格式外,其它几种格式在升级时都无需删除原先的老版本软件。

在创建软件包时,RPM和Debian一定要创建一个目录,将文件拷到该目录中,并设置其属主及文件权限。为了确保目录及文件的属主及权限正确,用户必须以root的身份创建软件包,这样做,会给系统安全造成潜在的安全,而且直接以root身份进行 *** 作也是违反相应的安全 *** 作规范的。如果软件包中包含了动态数据如数据库或交换数据会使得创建过程更加复杂。

商业UNIX格式使用软件文件列表将源文件设置为正确的目录及权限。这使得传输软件包中包含的动态数据、配置管理更加容易,同时由于用户不需要以root的身份进行 *** 作,也消除了潜在的安全问题。但这种格式的迟枣拆软件包都是专用的,不能在其它软件平台上使用。

前面做了这么多的铺垫,就是为了反衬出EPM的强大功能,现在我们来看看EPM的功能吧,它的功能可以概括为:

1、采码枣用通用软件标准格式创建二进制软件发行包。即该软件包能在所有的 *** 作系统中进行安装。

2、在打包前可以去除可执行文件中的调试信息。

3、将源文件及目录转换到安装路径及权限。

4、支持配置文件及启动时的初始化脚本。

5、当替换已有文件时能够进行自动备份。

6、提供安装及卸载脚本,无需附加的软件就可以工作于所有的系统中。

7、允许对整个软件包进行升级或通过patch的方式进行升级。

8、支持软件包中的冲突共存、需求检测及替换。

9、支持网络安装,但/usr目录必须是共享的。

10、在GNU的GPL之下必须是开放源码的。

11、支持可移植的格式和厂商指定的格式。其接口可以方便的扩展,以支持新的格式。

12、提供了一个简单的GUI图形界面的安装程序,就象在MicrosoftWindows中的流行的InstallShield一样。

13、支持多种文件名的替换方法,使得在发行版本中重新命名及定位文件更加简易。

14、在源文件名中支持通配符。

怎么样,功能够强大了吧!EPM不仅能够生成通用格式的软件包,而且使用也很简单。

二、EPM的列表文件

EPM的列表文件描述了软件包所包含的文件信息,在生成软件包过程中要用到它。它是一个ASCII码文件,每一行都描述了产品或文件的相关信息。注释以字母“#”开头。其具体格式如下:

1、Productinformation(产品信息)

下面这个产品信息是EPM的列表文件中关于产品信息的部分:

#Productinformation

%productESPPackageManager

%copyright1999-2001byEasySoftwareProducts,AllRightsReserved.

%vendorEasySoftwareProducts

%licenseCOPYING

%readmeREADME

%descriptionUniversalsoftwarepackagingtoolforUNIX.

%version2.2

其中产品信息以由百分号%开头,属性名称后就是其属性值,其间有一空格。

2、Variables(变量)

EPM可以在列表文件中引入当前的环境变量,用户也可以自己定义新的变量。

标识符$用来定义变量,在$后定义变量名及其初值,如下所示:

$name=value

$prefix=/usr

$exec_prefix=${prefix}

$bindir=$exec_prefix/bin

在列表文件中定义的变量可以由命令行或环境中定义的变量重载(overridden)。该方法很灵活,它是一把双刃剑,所以建议慎用!

3、Files(文件):

下面列出的是EPM软件包中包含的文件列表:

#Executables

%systemall

f0555rootsys/usr/bin/epmepm

f0555rootsys/usr/lib/epm/setupsetup

f0444rootsys/usr/share/doc/epm/READMEREADME

f0444rootsys/usr/share/doc/epm/COPYINGCOPYING

f0444rootsys/usr/share/doc/epm*.html

#Manpages

%systemirix

f0444rootsys/usr/share/catman/u_man/cat1/epm.1epm.1

%system!irix

f0444rootsys/usr/man/man1/epm.1epm.man

%system指令在这里是个条件判断语句,用来确定 *** 作系统类型,依照不同的 *** 作系统将man文档安装到不同的目录中。

在每行的开头,分别由不同的字母代表不同的文件或目录类型:字母f指示出文件名,字母d后代表目录名,c代表配置文件名,I代表初始化脚本的文件名,l表示链接文件。在升级patch文件中,对要进行升级的文件用相应的大写字母标示。

每一行中还有其它一些数据字段,如:文件许可位、属主、组、目标文件名及源文件名。可以引用环境变量及从EPM命令行传送来的变量来指定源文件名及目标文件名。如:可以将man文件安装到由mandir变量指定的路径中,而不是原先由%system指定的路径:

#Manpages

f0444rootsys$mandir/cat1/epm.1epm.1

f0444rootsys$mandir/man1/epm.1epm.man

还可以使用通配符一次指定多个文件:

f0444rootsys/usr/share/doc/epm*.htmlTop3 楼smallrascal(㊣小无赖㊣有事给我留言㊣)回复于 2003-06-23 08:29:59 得分 0 4、Directories(目录):用’-‘来表示目录下的所有文件:

d0755rootsys/foo/bar/dir-

5、ConfigurationFiles(配置文件):

配置文件与正常文件的使用相同。如果安装软件时有一个配置文件存在,新的配置文件就被存为filname.N,这样用户可以将其与老的配置文件合并。下面定义了CUPS的一个配置文件:

c0644rootsys/etc/cups/cupsd.confconf/cupsd.conf

6、InitializationScripts(初始化脚本):

初始化脚本就在在机器启动时执行的一段脚本语言或一个程序,通常用来启动后台守护程序。在安装时,EPM能够自动检查到初始化文件的位置,所以它可以对不同的Linux版本进行设置。下面是CUPS设置的初始化脚本:

i0555rootsyscupscups.sh

其中指定了初始化脚本的根名字为cups,源文件是cups.sh。

7、SymbolicLink(符号链接):

如果你想在/usr/bin中做一个gzip的链接,起名为gunzip,语法如下:

l0555rootsys/usr/bin/gunzipgzip

8、ConditionalDirectives(条件指示):

前面我们用到了%system来选择安装man文件的路径。%system用来检查 *** 作系统的名字或版本是否与指定的匹配。注:可以由命令uname得到 *** 作系统的名称,获得 *** 作系统的版本号用uname–r命令。

%systemirix

在为IRIX系统创建安装软件包时,包含以下的文件。

%systemlinux-2.0

在Linux-2.0.x的 *** 作系统创建软件包时,包含以下的文件。

%system!irix!linux-2.0

当不为IRIX和Linux2.0.x创建软件包时,包含以下的文件。

%systemall

这条语句指定所有的 *** 作系统。

如果要对不同的软件包格式指定不同的文件,可以用%format原语:

%formatrpm

当创建RPM发行包时只包括以下的文件。

%format!rpm

不创建RPM包时包含以下文件。

%formatall

所有类型的软件包都包含以下的文件。

9、Conflicts,Replaces,andRequires

软件冲突和需求由%incompat和%requires原语指定。如果你的软件包在安装时替换了其它的软件,你可以用%replaces原语指定替换的内容。(当软件包的格式不支持包替换时%replace就被映射成%conflics)。

可以通过指定软件包的名称说明软件包的依赖性:

%requiresfoobar

%incompatfoobar

%replacesfoobar

也可以直接用文件名来说明软件包的依赖性:

%requires/usr/lib/libfoobar.so

%incompat/usr/lib/libfoobar.so.1.2

软件包的依赖性检查只有对相同格式的软件包才强制执行,所以一个可移植格式的软件发行包,如果其需要“foobar”软件包,那么它只会查找已安装的可移植格式的”foobar”软件包。

三、用EPM构造软件发行包

1、用mkepmlist生成列表文件。

EPM提供了一个小程序---mkepmlist,用它来生成列表文件。其命令语法为:

mkepmlist[-ggroup][-uuser][--prefixdirectory]

directory[...directory]

各参数的意义如下:

-g:将指定目录下的文件的组属主改为指定的组名。

-u:将指定目录下的文件的用户属主改为指定的用户名。

--prefix:指定目的路径。如果当前软件的目录在/opt/foo下,你希望创建软件包的安装目录为/usr/local,用该参数就可以了:

mkepmlist--prefix=/usr/local/opt/foo>foo.list

这里用重定向符是为了得到foo.list这个文件,因为mkepmlist将结果打印到标准的输出即终端屏幕上。

2、生成软件包。

构造软件包只需运行”epm”即可,比如要构造一个名为test的发行包,只需运行:

epmtest

EPM会自动的调用列表文件test.list,如果要指定列表文件,命令如下:

epmtesttest.list

第一个参数为软件包的名字,test.list为列表文件的名称。执行结果是生成一个包括了发行文件及安装脚本的tar压缩文件。

同时,在创建软件包时还可以给变量赋值,如下面指定了安装man文件的目录:

epmmandir=/foo/bar/mantesttest.list

EPM的-f选项还可以生成厂商指定的发行包:

epm–fformat…

format选项包括:

·depot或swinstall-HP-UX的软件发行包格式;

·dpkg-Debian的软件发行包格式;

·instortardist-IRIX的软件发行包格式;

·native-"Native"(RPM,INST,DEPOT,PKG等)的软件发行包格式;

·pkg-Solaris的软件包发行包格式;

·portable–默认的可移植格式;

·rpm-RedHat的软件包发行格式。

采用-f选项时,无需对列表文件做任何改动。例如为test创建一个RPM格式的发行包:

epm–frpmtest结果就生成了一个RPM格式的发行包。

四、后记

在完成本文时,我发现,其实InstallShield的产品系列中也有支持跨平台的版本,该版本的InstallShield又分为Enterprise、Professional和Express三种级别,分别满足不同用户的使用要求:其中Express级的产品是最初级的产品,用户无需做太多的设置就可以快速的生成安装文件;而Professional级的InstallShield还允许用户对安装进行更多的设置;最高级的Enterprise除了以上的功能外,更可以为象AS-400这样大型系统生成安装软件包。

怎么样,InstallShield是不是也做得很棒?但是,这一切都是要银子的,开放源代码就更不可能了。所以除非你对程序的安装界面有特别的要求或者软件安装平台是微软的Windows,那么EPM一定会是你最好的选择!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12192376.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存