如何在安裝或運行時檢查S60平台版本

來源:互聯網
上載者:User
  • 開發夥伴平台:

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
 
//------------------------------------------------------------------------------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.