pkg文件中判断目标系统的方法

      根据广大网友的经验,S60 3rd MR/FP1/FP2,S60 5th在系统中均有一些特征文件,表明了系统的实际版本,在某些应用场景下,目标机器的系统版本非常重要,以便于针对不同的系统部署不同的dll或exe,来适配更多的机型。

      目前最普遍的方式是判断Series60文件,描述如下:     

 

      z:/system/install/Series60v3.0.sis  :  S60 3rd MR

      z:/system/install/Series60v3.1.sis  :  S60 3rd FP1

      z:/system/install/Series60v3.2.sis  :  S60 3rd FP2

      z:/system/install/Series60v5.0.sis  :  S60 5th

 

      可以在pkg文件中,判断这些文件是否存在,以安装对应的dll或exe,示例如下:

 

IF (EXISTS("z:/system/install/Series60v3.2.sis"))
   "sys/bin/aa.dll"-"!:/sys/bin/aa.dll"
ELSEIF (EXISTS("z:/system/install/Series60v3.1.sis"))
   "sys/bin/aa(0-7).dll"-"!:/sys/bin/aa.dll"
ELSE
   "sys/bin/aa(0-8).dll"-"!:/sys/bin/aa.dll"
ENDIF

 

      该段说明如果是FP2则安装aa.dll库,如果是FP1则安装aa(0-7).dll库,MR则安装aa(0-8).dll库,其他的以此类推。

 

      在程序中可以用以下函数判断系统版本:

 

void CAppInfo::DeterminSystemVer() {
       
        iSystemVer = 30;       
        RFs fs;
        if( KErrNone != fs.Connect() ) { return; }
        TFindFile finder(fs);
        if( KErrNone == finder.FindByDir( _L("Series60v5.0.sis"), _L("z://system//install//") ) ){
                iSystemVer = 50;
        } else if( KErrNone == finder.FindByDir( _L("Series60v3.2.sis"), _L("z://system//install//") ) ){
                iSystemVer = 32;
        } else if( KErrNone == finder.FindByDir( _L("Series60v3.1.sis"), _L("z://system//install//") ) ){
                iSystemVer = 31;
        }       
        fs.Close();
}

 

剩下的,就由大家自由发挥了!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值