diff -r d17dc5398051 -r 329d304c1aa1 ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp --- a/ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp Fri Jun 11 13:45:18 2010 +0300 +++ b/ncdengine/provider/deviceinteraction/src/ncdsilentinstallactiveobserver.cpp Thu Jun 24 12:37:54 2010 +0300 @@ -19,6 +19,8 @@ #include "ncdsilentinstallactiveobserver.h" #include "ncdasyncsilentinstallobserver.h" +#include + CNcdSilentInstallActiveObserver* CNcdSilentInstallActiveObserver::NewL( MNcdAsyncSilentInstallObserver& aObserver ) { @@ -49,6 +51,9 @@ void CNcdSilentInstallActiveObserver::ConstructL() { + + iResults = 0; + CActiveScheduler::Add( this ); } @@ -60,6 +65,9 @@ // cancel install operation and closes the silent installer. // If no operation is going on, the installer is already closed. // So, no need to close the silent launcher here separately. + + delete (iResults); + CancelAsyncOperation(); } @@ -72,12 +80,37 @@ // Notice, that we do not call the callback functions of the observer here // because we suppose that the observer has started the cancel operation itself // or the caller will inform the observer itself. - SilentLauncher().CancelAsyncRequest( iCancelCode ); + + SilentLauncher().CancelOperation(); } void CNcdSilentInstallActiveObserver::StartToObserveL( const TDesC& aFileName, - const SwiUI::TInstallOptionsPckg& aSilentInstallOptionsPckg ) + const Usif::COpaqueNamedParams* aSilentInstallOptions ) + { + // For silent installation + // Notice that if the user does not have TrustedUI capabilities + // then this will given KErrPermissionDenied. + // Connect to the launcher here just before it is needed, + // because the launcher will be shown in the application list. + // So, it would not be nice to connect in the ConstructL and to show + // the icon in the list all the time. + // User::LeaveIfError( SilentLauncher().Connect() ); + User::LeaveIfError( SilentLauncher().Connect() ); + + if (!iResults) + { + iResults = Usif::COpaqueNamedParams::NewL(); + } + + iInstaller.Install( aFileName, *aSilentInstallOptions, *iResults, iStatus ); + + + } + + +void CNcdSilentInstallActiveObserver::StartToObserveL( RFile& aFile, + const Usif::COpaqueNamedParams* aSilentInstallOptions ) { // For silent installation // Notice that if the user does not have TrustedUI capabilities @@ -86,34 +119,73 @@ // because the launcher will be shown in the application list. // So, it would not be nice to connect in the ConstructL and to show // the icon in the list all the time. + User::LeaveIfError( SilentLauncher().Connect() ); - iCancelCode = SwiUI::ERequestSilentInstall; - SilentLauncher().SilentInstall( iStatus, - aFileName, - aSilentInstallOptionsPckg ); + if (!iResults) + { + iResults = Usif::COpaqueNamedParams::NewL(); + } + /* + if (iResults) + { + delete (iResults); + iResults = 0; + } + iResults = Usif::COpaqueNamedParams::NewL(); - SetActive(); - } - + if (iArguments) + { + delete (iArguments); + iArguments = 0; + } + iArguments = Usif::COpaqueNamedParams::NewL(); -void CNcdSilentInstallActiveObserver::StartToObserveL( RFile& aFile, - const SwiUI::TInstallOptionsPckg& aSilentInstallOptionsPckg ) - { - // For silent installation - // Notice that if the user does not have TrustedUI capabilities - // then this will given KErrPermissionDenied. - // Connect to the launcher here just before it is needed, - // because the launcher will be shown in the application list. - // So, it would not be nice to connect in the ConstructL and to show - // the icon in the list all the time. - User::LeaveIfError( SilentLauncher().Connect() ); + // Silent installation request + + TBool iSet = ETrue; + + enum TSifPolicy + { + EAllowed = 0, + ENotAllowed = 1, + EUserConfirm = 2 + }; - iCancelCode = SwiUI::ERequestSilentInstallHandle; - SilentLauncher().SilentInstall( iStatus, - aFile, - aSilentInstallOptionsPckg ); - + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_InstallSilently, ETrue ); + else + iArguments->AddIntL( Usif::KSifInParam_InstallSilently, EFalse ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_PerformOCSP, Usif::ENotAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_AllowUpgrade, Usif::EAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_AllowUntrusted, Usif::ENotAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_GrantCapabilities, Usif::ENotAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_InstallOptionalItems, Usif::EAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_IgnoreOCSPWarnings, Usif::EAllowed ); + //iArguments->AddIntL( Usif::KSifInParam_PackageInfo, ETrue ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_AllowAppShutdown, Usif::EAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_AllowDownload, Usif::EAllowed ); + if (iSet) + iArguments->AddIntL( Usif::KSifInParam_AllowOverwrite, Usif::EAllowed ); + + + //iArguments->AddIntL(Usif::KSifInParam_InstallSilently, 1); + //iArguments->AddIntL( Usif::KSifInParam_DisplayPackageInfo, ETrue ); + + iInstaller.Install(aFile, *iArguments, *iResults, iStatus); + */ + + iInstaller.Install( aFile, *aSilentInstallOptions, *iResults, iStatus ); + + SetActive(); } @@ -140,6 +212,15 @@ // Close the installer. // The launcher is shown in the application list. // So, it would not be nice to leave it there after operation is completed. + + + TInt ErrCategory = 0; + TInt ErrCode = 0; + TInt ExtendedErrCode =0; + + TBool ret = iResults->GetIntByNameL(Usif::KSifOutParam_ErrCategory, ErrCategory); + ret = iResults->GetIntByNameL(Usif::KSifOutParam_ErrCode, ErrCode); + ret = iResults->GetIntByNameL(Usif::KSifOutParam_ExtendedErrCode, ExtendedErrCode); SilentLauncher().Close(); TInt errorCode( ConvertErrorCode( iStatus.Int() ) ); @@ -154,15 +235,16 @@ return iObserver; } - -SwiUI::RSWInstSilentLauncher& CNcdSilentInstallActiveObserver::SilentLauncher() +Usif::RSoftwareInstall& CNcdSilentInstallActiveObserver::SilentLauncher() { - return iSilentLauncher; + // return iSilentLauncher; + return iInstaller; } TInt CNcdSilentInstallActiveObserver::ConvertErrorCode( TInt aErrorCode ) { + /* switch ( aErrorCode ) { case SwiUI::KSWInstErrUserCancel: @@ -181,7 +263,8 @@ // Nothing to do here. break; } - + */ + return aErrorCode; }