静默安装与静默删除

首先必须使用非公开的API

 


下面是安装,可以同步,也可以异步,下面这个是同步,异步的话还要自己写一个AO。

        // Silent Installer
SwiUI::RSWInstSilentLauncher iLauncher; 
//Install Option
SwiUI::TInstallOptions iOptions;
//Installation Option pkg
SwiUI::TInstallOptionsPckg iOptionsPckg; 

iOptions.iUpgrade = SwiUI::EPolicyAllowed;

iOptions.iOCSP = SwiUI::EPolicyAllowed;

iOptions.iDrive = 'C';   

iOptions.iUntrusted = SwiUI::EPolicyAllowed; 

iOptions.iCapabilities = SwiUI::EPolicyAllowed; 

iOptionsPckg = iOptions;   

TBufC<50> FName(KTempPath);//需要安装的SIS文件路径
 
//Silent insatllation
iLauncher.Connect();
iLauncher.SilentInstall(/*waiter->iStatus,8*/FName,iOptionsPckg);

iLauncher.Close();  
GetSinkInfo();
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote;
informationNote->ExecuteLD( _L("SilentInstall ok!!"));

下面是卸载
SwiUI::RSWInstLauncher iLauncher;
CleanupClosePushL(iLauncher);
User::LeaveIfError(iLauncher.Connect()); 

SwiUI::TUninstallOptions iUninstallOptions;        
iUninstallOptions.iKillApp = SwiUI::EPolicyAllowed;
iUninstallOptions.iBreakDependency = SwiUI::EPolicyAllowed;

SwiUI::TUninstallOptionsPckg iUninstallOptionsPckg(iUninstallOptions); 
      
iLauncher.SilentUninstall(TUid::Uid(0xA00000EB),iUninstallOptionsPckg,SwiUI::KSisxMimeType);
CleanupStack::PopAndDestroy( &iLauncher );
iEikonEnv->InfoMsg( _L("SilentUninstall ok") );

同样卸载也可以 同步或异步
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及 本声明
http://f6adf6ad.blogbus.com/logs/70969317.html
Symbian 静默安装实现之分享

                         Waydejiang 江小伟

 

一  需求分析:

 

由于项目中需要安装多个sisx包,但是又不想让用户看到安装了多个包,所以需要在安装1个sisx的时候,偷偷的安装上其他的sisx包。这样程序在后台可以用静默安装来完成这一特殊需求。

 

二  SDK能支持的。

 

Symbian sdk 其实提供了一组用程序来实现对 sisx或者其他类型的文件如(jar包)的安装的类。这些类属于symbian sdk plugin apis。

我们需要下载swinstapi. Swinstdefs.h swinstdefs.inl 三个头文件,以及swinstcli.lib 等3个库文件。

 

三   实现细节:

 

1.  类说明 :

本文主要说明 静默安装的实现。其实主要用到 3个类,依次是

 SwiUI::RSWInstSilentLauncher

 SwiUI::TInstallOptions                               

 SwiUI::TInstallOptionsPckg 

 

 SwiUI::RSWInstSilentLauncher 从名称看是1个R类,用法和其他的R类类似,先Connect,然后做自己感兴趣的事,完了后Close就可以了。静默安装这一过程实际上后台会启动1个服务程序,然后来完成app这边的安装请求。整个过程其实就是一个

Session的过程。这个类会有一些Install,UnInstall的方法,其中有同步的,也有异步的。根据需求,我们可以自己选择,我这里用的是同步的调用方式。

 

     SwiUI::TInstallOptions 这个类主要描述安装时的一些参数。也是用户可定制的。

     SwiUI::TInstallOptions 安装的选项配置类,主要包含以下成员。

 

变量类型

成员变量名

含义

TPolicy

iUpgrade

是否覆盖安装

TPolicy

iOptionalItems

可选配置项

TPolicy

iOCSP

是否检查网络的签名认证状态

TPolicy

iIgnoreOCSPWarnings

发生OCSP警告时是否继续安装

TPolicy

iUntrusted

是否安装未签名的程序

TPolicy

iPackageInfo

是否省略包的信息

TPolicy

iCapabilities

是否自动给用户能力

TPolicy

iKillApp

安装完成后是否删除源安装程序

TPolicy

iOverwrite

是否允许覆盖原文件

TPolicy

iDownload

是否可下载

TBuf

iLogin

下载用户名,最大长度KSWInstMaxUserNameLength

TBuf

iPassword

 

下载密码,最大长度KSWInstMaxPasswordLength

TChar 

iDrive

安装的目标驱动器

TLanguage 

iLang

选择的语言

TBool 

iUsePhoneLang

强制使用手机上的默认语言

TPolicy 

iUpgradeData

是否更新所有数据

 

SwiUI::TInstallOptionsPckg 这个类就是将上述配置信息真正应用的1个类。

 

 

2. 技术关键点:

  

  前面谈到SwiUI::RSWInstSilentLauncher会有一组方法,包含异步实现如

  IMPORT_C void SilentInstallTRequestStatus& aReqStatus, 

                                     const TDesC& aFileName, 

                                     const TDesC8& aOptions );

  也包含同步实现如

  IMPORT_C TInt SilentInstallRFile& aFile, const TDesC8& aOptions );

  因为我们要安装2个sisx,所以采用了同步的接口。若用异步的接口,也可以用CActiveWaitSheduler来实现伪同步。

  

  这个函数调用时可能返回KSWInstErrBusy 的错误,说明在调用这个接口的时候,可能要等后台服务程序处理完。所以加入延时等待逻辑。

的代码。

 

  3.其他:

 

 

  我们在调用这个函数前,需要先设置下 iOptionsPckg ,也就是前面提到的安装设置项,这个具体信息可以参考前面的表格。另外path是根据安装进程所在全路径获得,我们可以根据如下代码得到。

 

 

     TFileName  exePath ;

 

    RProcess process ;

    //get qsinstall.exe 's full path

    exePath = process.FileName() ;

    TParse parse ;

    parse.Set(exePath,NULL,NULL) ;

    aDrive.Zero() ;

    aDrive.Append(parse.Drive());

四.后记

 

 

   本文只讨论了静默安装,其实这组类还可以实现静默卸载,即SwiUI::RSWInstLauncher

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值