nokia SDK API Plug-in-------Symbian 自動安裝卸載程序

擁有自動下載更新,對於一款正式發佈的軟件來說是一種不錯的功能!

實現的思路一般是在源程序資源文件中記錄本程序的版本號,更新時首先連接一服務器地址收到當前版本信息,如果高於當前版本,則將新版本下載更新。

對於Symbian 3rd下一般有兩種代碼方式更新安裝sisx文件,

一種RApaLsSession 類,這種方法代碼簡單但更新對用戶有提示不需要特別能力。

 TBuf<64> buf;
 buf.Append(KTempPath);//sisx文件路徑
 
 RApaLsSession iApaLsSession;
 iApaLsSession.Connect();
 TThreadId threadId;
 iApaLsSession.StartDocument( buf,  threadId );
 iApaLsSession.Close(); 

另外一種通過nokia sdk--plugin 包 SW_Installer_Launcher_API 實現

從名字上就可以看出它對用戶無提示安裝,但需要 TrustedUI 能力,發佈需要簽名

SDK_API_Plug-in

http://wiki.forum.nokia.com/index.php/SDK_API_Plug-in

 

 實現可以參考

http://wiki.forum.nokia.com/index.php/SW_Installer_Launcher_API

 

但測試時注意,部分機型要將代碼中的EPolicyNotAllowed(E71)全改爲EPolicyAllowed(N95)才能實現

 

對於不提示卸載可以參考如下代碼

   SwiUI::RSWInstLauncher swInstLauncher;
   CleanupClosePushL(swInstLauncher);
   User::LeaveIfError(swInstLauncher.Connect());
    
   SwiUI::TUninstallOptions uninstallOptions;
   uninstallOptions.iKillApp = SwiUI::EPolicyAllowed;
   uninstallOptions.iBreakDependency = SwiUI::EPolicyAllowed;
   SwiUI::TUninstallOptionsPckg optionsPckg(uninstallOptions);
   
   swInstLauncher.SilentUninstall(TUid::Uid(xxxxxx), optionsPckg, SwiUI::KSisxMimeType);
   CleanupStack::PopAndDestroy(&swInstLauncher);
   
   iEikonEnv->InfoMsg( _L("SilentUninstall ok") );


這套Plugin API不但對於sisx文件可行,其他jar widget也行。只需修改KxxMimeType類型就行。(沒有實際測試過)

 

_LIT8(KMIMEType,"application/x-nokia-widget");

_LIT8( KSisxMimeType, "x-epoc/x-sisx-app" );
_LIT8( KSisMimeType, "application/vnd.symbian.install" );
_LIT8( KPipMimeType, "application/x-pip" );
_LIT8( KJadMIMEType, "text/vnd.sun.j2me.app-descriptor" );
_LIT8( KJarMIMEType, "application/java-archive" );
_LIT8( KJavaMIMEType, "application/java");
_LIT8( KJarxMIMEType, "application/x-java-archive");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章