安装和运行时如何判定S60平台版本?

Checking S60 platform version during installation or at run time

 

Description

 

All S60 application SIS packages contain a mandatory dependency to ’Series60ProductID’ component. This dependency defines the minimum S60 platform version required in order to run the application, and prevents installation on older platforms. See the document "S60 Platform: Identification Codes" available at http://www.forum.nokia.com/info/sw.nokia.com/id/98ac8551-0134-467d-80f3-1c0a3010bf58/S60_Platform_Identification_Codes_v1_4_en.pdf.html for more information about the use of Series60ProductID.

The Series60ProductID can be checked only during installation, and only for aborting the installation or warning about possible incompatibility. However, in some cases it would be useful to have a single SIS package that would select the installed files based on the S60 platform version. The following solution describes how to do this in a .pkg file. Similarly, a code snippet for checking the platform version at run time is provided.

 

Solution

 

Platform version in pkg condition blocksEven though there is no dedicated attribute for the S60 platform version that could be used with IF condition blocks, it is still possible to resolve the version, based on the existence of specific files on the ROM drive.

Each Series60ProductID component is stored in a separate .sis file in z:/system/install/ directory. These files are named as follows:

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

In each device, there is a corresponding file for the platform version it represents, and also files for all previous versions that are supported. For example, the Nokia N70 (2nd Edition, FP3) contains all above files except Series60v3.0.sis, and the Nokia E70 (3rd Edition) only has Series60v3.0.sis.

These filenames can be utilized in pkg files:

;---------------------------------------

#{"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

;---------------------------------------

 

Checking the platform version at run time

The following function can be used to recover the S60 platform version at run time. On return, aMajor and aMinor contain the highest version number found from above file names. Note that while aMajor refers to the S60 Edition, aMinor cannot always be directly interpreted as a Feature Pack number (for example, 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

    }

 

//------------------------------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值