如何在安装或运行时检查S60平台版本

转载 2011年01月20日 14:27:00
  • 开发伙伴平台:

S60 1st Edition

S60 2nd Edition, all S60 2nd Edition FPs

S60 3rd Edition, S60 3rd Edition FP1

 

  • 详细描述

所有的S60程序SIS安装包都带有一个Series60ProductID代表mandatory dependency。

这个dependency指名运行该程序所需要最小的S60平台版本,以防安装在老版本上。可以参考文档S60 Platform: Identification Codes以获取关于Series60ProductID的更多用法介绍。


Series60ProductID只能在安装时用来检查,并且只能中断安装或提示不兼容信息。我们有时需要一个单独的SIS包但可以根据不同的S60平台选择安装文件。下面的解决方案描述如何在一个pkg文件中处理这样的情况,同样也提供了一段示例代码演示了如何在运行中判断平台版本:

 

  • 解决方案

pkg文件中的平台版本判断部分,即使在IF模块中没有可用的属性来判断S60平台版本,我们也可以通过在ROM中的特定文件来处理.


每个Series60ProductID组件都作为一个单独的sis文件存在z:/system/install/目录下,按如下命名方式排列:

z:/system/install/Series60v3.0.sis     | S60 3rd Edition
 
z:/system/install/Series60v2.8.sis | S60 2nd Edition, Feature Pack 3
 
z:/system/install/Series60v2.6.sis | S60 2nd Edition, Feature Pack 2
 
z:/system/install/Series60v2.1.sis | S60 2nd Edition, Feature Pack 1
 
z:/system/install/Series60v2.0.sis | S60 2nd Edition
 
z:/system/install/Series60v1.2.sis | S60 1st Edition (1.2)
 
z:/system/install/Series60v1.1.sis | (n/a)
 
z:/system/install/Series60v1.0.sis | (n/a)
 
z:/system/install/Series60v0.9.sis | S60 v0.9


每个手机上都有一个与当前平台版本相关的关联文件,同样所有支持的老版本文件也有。例如,Nokia N70(2nd Edition, FP3)包含除了Series60v3.0.sis以外的文件,而Nokia E70(3rd Edition)只包含Series60v3.0.sis。


下列文件名可以用在pkg文件中:

;---------------------------------------
 
#{"MyApplication"},(0x10000001),1,0,0
 
; Lowest supported S60 platform version is 2nd Edition
 
(0x101F7960), 0, 0, 0, {" Series60ProductID"}
 
; install common files for all supported platforms
 
; ...
 
IF EXISTS("z:/system/install/Series60v2.8.sis")
 
; install 2nd Ed, FP3-specific files
 
ELSEIF EXISTS("z:/system/install/Series60v2.6.sis")
 
; install 2nd Ed, FP2-specific files
 
ELSEIF EXISTS("z:/system/install/Series60v2.1.sis")
 
; install 2nd Ed, FP1-specific files
 
ELSE
 
; 2nd Edition-specific files
 
ENDIF
 
;---------------------------------------


在运行时检查平台版本

下列方法可以在运行时检查S60平台版本,返回时,将获得版本号。注意当主版本号表明S60版本时,副版本号将表明Feature Pack版本(如2.6=2nd Edition, FP2)

//------------------------------------------------------------------------------
 
#include <f32file.h> // link against efsrv.lib
 
_LIT(KS60ProductIDFile, "Series60v*.sis");
 
_LIT(KROMInstallDir, "z://system//install//");
 
void GetS60PlatformVersionL( RFs& aFs, TUint& aMajor, TUint& aMinor )
 
{
 
TFindFile ff( aFs );
 
CDir* result;
 
User::LeaveIfError( ff.FindWildByDir( KS60ProductIDFile, KROMInstallDir, result ) );
 
CleanupStack::PushL( result );
 
User::LeaveIfError( result->Sort( ESortByName|EDescending ) );
 
aMajor = (*result)[0].iName[9] - '0';
 
aMinor = (*result)[0].iName[11] - '0';
 
CleanupStack::PopAndDestroy(); // result
 
}
 
 http://wiki.forum.nokia.com/index.php/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%AE%89%E8%A3%85%E6%88%96%E8%BF%90%E8%A1%8C%E6%97%B6%E6%A3%80%E6%9F%A5S60%E5%B9%B3%E5%8F%B0%E7%89%88%E6%9C%AC
 
//------------------------------------------------------------------------------

[Oracle安装问题]检查操作系统版本: 必须是5.1 or 5.2。实际为 6.1未通过

软件参数 OS:Windows server 2008 Enterprise R2 x64         DB:Oracle 10g x64         VM:Sun JDK 1.6 up...
  • zhangli865621030
  • zhangli865621030
  • 2014年09月19日 12:18
  • 7403

编译时类型检查与运行时类型检查

编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只是一般意义上这么说,实际上可能只是翻译成某个中间状态的语言.比如Java只有JVM识...
  • u013298353
  • u013298353
  • 2013年12月30日 10:57
  • 1654

编译时异常和运行时异常的区别

最简单的说法: javac出来的异常就是编译时异常,就是说把源代码编译成字节码(class)文件时报的异常,一般如果用Eclispe,你敲完代码保存的时候就是编译的时候。 java出来的异常就是运...
  • JAVA528416037
  • JAVA528416037
  • 2015年07月01日 09:40
  • 5966

oracle安装中出现:检查操作系统版本必须是5.0,5.1,or 6.0。实际为6.1

问题:在windows操作系统上安装oracle 10G R2时出现了标题中的错误,如下图: 解决方案:几番查询之后发现是oracle的一个小bug,可以通过更改配置文件“o...
  • huangqiude
  • huangqiude
  • 2017年06月14日 20:20
  • 1366

检查操作系统版本: 必须是5.1 or 5.2。实际为 6.1未通过

软件参数 OS:Windows server 2008 Enterprise R2 x64         DB:Oracle 10g x64         VM:Sun JDK ...
  • gua___gua
  • gua___gua
  • 2016年06月13日 14:28
  • 3638

运行时异常和检查性异常区别

运行时异常和检查性异常区别
  • Ashenyongye
  • Ashenyongye
  • 2016年09月22日 09:34
  • 2332

C++运行时类型识别——RTTI

通过运行时类型识别——RTTI,程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类类型:...
  • u014245881
  • u014245881
  • 2015年08月25日 15:03
  • 713

如何在一个设备上安装一个App的两个不同版本

最近干了件蠢事,事情是这样的,我们App有2套图标,一套是测试版图标用于发布OTA的内部测试版,一套是正式版用于发布到AppStore,每次打包,我都会检查图标,结果上次粗心搞错了,把测试版的图标打包...
  • yangpansky
  • yangpansky
  • 2013年11月26日 12:03
  • 2410

Linux有问必答:如何在Linux上检查SSH的版本

原文: http://ask.xmodulo.com/check-ssh-protocol-version-linux.html 译文: LCTT http://linux.cn/arti...
  • robertsong2004
  • robertsong2004
  • 2015年01月05日 16:52
  • 1565

查看.Net Framework的版本(PC和WinCE)

http://blog.csdn.net/esunshine1985/article/details/9060953 一、在电脑上查看.Net Framework的版本 (1)第一步:...
  • mituan1234567
  • mituan1234567
  • 2013年11月27日 09:44
  • 848
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何在安装或运行时检查S60平台版本
举报原因:
原因补充:

(最多只允许输入30个字)