connectivitymodules/SeCon/services/pcd/src/sconinstaller.cpp
author hgs
Tue, 12 Oct 2010 17:42:13 +0530
changeset 64 a62b67d1f67c
parent 40 b63e67867dcd
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
64
hgs
parents: 40
diff changeset
     2
* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:  CSConAppInstaller implementation
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
// INCLUDE FILES
40
hgs
parents: 20
diff changeset
    20
#include <s32mem.h> // For RBufWriteStream
hgs
parents: 20
diff changeset
    21
#include <utf.h>  // for CnvUtfConverter
64
hgs
parents: 40
diff changeset
    22
#include <usif/usifcommon.h>
hgs
parents: 40
diff changeset
    23
#include <usif/scr/scr.h>
hgs
parents: 40
diff changeset
    24
#include <driveinfo.h>
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
40
hgs
parents: 20
diff changeset
    26
using namespace Usif;
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include "debug.h"
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "sconinstaller.h"
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "sconpcdconsts.h"
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
const TInt KSConSeConUidValue = 0x101f99f6;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
const TUid KSConSeConUid = {KSConSeConUidValue};
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
40
hgs
parents: 20
diff changeset
    35
_LIT8(KValSep, "=");
hgs
parents: 20
diff changeset
    36
_LIT8(KComma, ",");
hgs
parents: 20
diff changeset
    37
_LIT8(KLineEnd, "\r\n");
hgs
parents: 20
diff changeset
    38
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
// ============================= MEMBER FUNCTIONS ===============================
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
40
hgs
parents: 20
diff changeset
    41
CSConAppInstaller* CSConAppInstaller::NewL( CSConInstallerQueue* aQueue, RFs& aFs )
hgs
parents: 20
diff changeset
    42
    {
hgs
parents: 20
diff changeset
    43
    CSConAppInstaller* self = new (ELeave) CSConAppInstaller( aQueue, aFs );
hgs
parents: 20
diff changeset
    44
    CleanupStack::PushL( self );
hgs
parents: 20
diff changeset
    45
    self->ConstructL();
hgs
parents: 20
diff changeset
    46
    CleanupStack::Pop( self );
hgs
parents: 20
diff changeset
    47
    return self;
hgs
parents: 20
diff changeset
    48
    }
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
// CSConAppInstaller::CSConAppInstaller( CSConInstallerQueue* aQueue )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
// Constructor
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
CSConAppInstaller::CSConAppInstaller( CSConInstallerQueue* aQueue, RFs& aFs ) :
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
    CActive( EPriorityStandard ), iQueue( aQueue ), iFs( aFs )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
    {
40
hgs
parents: 20
diff changeset
    57
    CActiveScheduler::Add( this );
hgs
parents: 20
diff changeset
    58
    }
hgs
parents: 20
diff changeset
    59
hgs
parents: 20
diff changeset
    60
void CSConAppInstaller::ConstructL()
hgs
parents: 20
diff changeset
    61
    {
hgs
parents: 20
diff changeset
    62
    iSifOptions = COpaqueNamedParams::NewL();
hgs
parents: 20
diff changeset
    63
    iSifResults = COpaqueNamedParams::NewL();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
// CSConAppInstaller::~CSConAppInstaller()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
// Destructor
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
CSConAppInstaller::~CSConAppInstaller()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
    TRACE_FUNC;
40
hgs
parents: 20
diff changeset
    74
    Cancel();
hgs
parents: 20
diff changeset
    75
    iSwInstaller.Close();
hgs
parents: 20
diff changeset
    76
    delete iSifOptions;
hgs
parents: 20
diff changeset
    77
    delete iSifResults;
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
// CSConAppInstaller::StartInstaller( TInt& aTaskId )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
// Starts the installer task
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
void CSConAppInstaller::StartInstaller( TInt& aTaskId )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
    TRACE_FUNC_ENTRY;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
    CSConTask* task = NULL;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
    TRequestStatus* status = NULL;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
    TInt err( KErrNone );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    91
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    92
    TInt ret = iQueue->GetTask( aTaskId, task );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
    if( aTaskId > 0 && ret != KErrNotFound )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
        {
40
hgs
parents: 20
diff changeset
    96
        if ( IsActive() )
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
            {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
            LOGGER_WRITE("WARNING! SConAppInstaller was not on idle state!");
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
            iQueue->CompleteTask( aTaskId, KErrInUse );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
            TRACE_FUNC_EXIT;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
            return;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
            }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
        
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
        
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
        iCurrentTask = aTaskId;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
        iQueue->SetTaskProgress( aTaskId, KSConCodeProcessingStarted );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
        
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
        switch( task->GetServiceId() )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
            {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
            case EInstall :
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
                iQueue->ChangeQueueProcessStatus();
40
hgs
parents: 20
diff changeset
   112
                err = iSwInstaller.Connect();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
                if( err == KErrNone )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
                    {
40
hgs
parents: 20
diff changeset
   115
                    TRAP(err, ProcessInstallL( *task->iInstallParams ));
hgs
parents: 20
diff changeset
   116
                    if( err != KErrNone )
hgs
parents: 20
diff changeset
   117
                        {
hgs
parents: 20
diff changeset
   118
                        LOGGER_WRITE_1( "StartInstaller ProcessInstallL err: %d", err );
hgs
parents: 20
diff changeset
   119
                        iStatus = KRequestPending;
hgs
parents: 20
diff changeset
   120
                        SetActive();
hgs
parents: 20
diff changeset
   121
                        status = &iStatus;
hgs
parents: 20
diff changeset
   122
                        User::RequestComplete( status, err );
hgs
parents: 20
diff changeset
   123
                        }
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
                    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
                
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
                break;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
            case EUninstall :
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
                iQueue->ChangeQueueProcessStatus();
40
hgs
parents: 20
diff changeset
   129
                err = iSwInstaller.Connect();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
                if( err == KErrNone )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
                    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
                    LOGGER_WRITE( "Begin to uninstall.. " );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
                    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
                    TRAP( err, ProcessUninstallL( *task->iUninstallParams ) );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
                    if( err != KErrNone )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
                        {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
                        LOGGER_WRITE_1( "StartInstaller ProcessUninstallL err: %d", err );
40
hgs
parents: 20
diff changeset
   138
                        iStatus = KRequestPending;
hgs
parents: 20
diff changeset
   139
                        SetActive();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
                        status = &iStatus;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
                        User::RequestComplete( status, err );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
                        }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
                    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
                
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
                break;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
            case EListInstalledApps :
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
                iQueue->ChangeQueueProcessStatus();
40
hgs
parents: 20
diff changeset
   148
                iStatus = KRequestPending;
hgs
parents: 20
diff changeset
   149
                SetActive();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
                TRAP( err, ProcessListInstalledAppsL() );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
                status = &iStatus;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
                User::RequestComplete( status, err );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
                break;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
            default :
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
                break;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
            }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
        }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
    TRACE_FUNC_EXIT;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
// CSConAppInstaller::StopInstaller( TInt& aTaskId )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
// Stops the installer task
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
void CSConAppInstaller::StopInstaller( TInt& aTaskId )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
    TRACE_FUNC_ENTRY;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
    //If the task is the current task, cancel it first
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
    if( iCurrentTask == aTaskId )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
        {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
        Cancel();
40
hgs
parents: 20
diff changeset
   173
        iSwInstaller.Close();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
        }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
    TRACE_FUNC_EXIT;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   178
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   179
// TBool CSConAppInstaller::InstallerActive()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
// returns installer activity status
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
TBool CSConAppInstaller::InstallerActive() const
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
    {
40
hgs
parents: 20
diff changeset
   185
    return IsActive();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
// CSConAppInstaller::DoCancel()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
// Implementation of CActive::DoCancel()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
void CSConAppInstaller::DoCancel()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
    TRACE_FUNC_ENTRY;
40
hgs
parents: 20
diff changeset
   196
    LOGGER_WRITE("Cancel iSwInstaller");
hgs
parents: 20
diff changeset
   197
    iSwInstaller.CancelOperation();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
    TRACE_FUNC_EXIT;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
// CSConAppInstaller::RunL()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
// Implementation of CActive::RunL()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
void CSConAppInstaller::RunL()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
    TRACE_FUNC_ENTRY;
40
hgs
parents: 20
diff changeset
   209
    iSwInstaller.Close();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
    iQueue->ChangeQueueProcessStatus();
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
    TInt err( iStatus.Int() );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
    LOGGER_WRITE_1( "CSConAppInstaller::RunL() iStatus.Int() : returned %d", err );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
    CSConTask* task = NULL;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
    TInt taskErr = iQueue->GetTask( iCurrentTask, task );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
    if( taskErr == KErrNone )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
        {
40
hgs
parents: 20
diff changeset
   218
        if ( task->GetServiceId() == EInstall || task->GetServiceId() == EUninstall )
hgs
parents: 20
diff changeset
   219
            {
hgs
parents: 20
diff changeset
   220
            TRAPD(dataErr, WriteTaskDataL( *task ));
hgs
parents: 20
diff changeset
   221
            if (dataErr)
hgs
parents: 20
diff changeset
   222
                {
hgs
parents: 20
diff changeset
   223
                LOGGER_WRITE_1("WriteTaskDataL err: %d", dataErr);
hgs
parents: 20
diff changeset
   224
                }
hgs
parents: 20
diff changeset
   225
            }
hgs
parents: 20
diff changeset
   226
        
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
        if( task->GetServiceId() == EInstall && err == KErrNone )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
            {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   229
            LOGGER_WRITE( "CSConAppInstaller::RunL() : before DeleteFile" );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
            //delete sis after succesfull install
64
hgs
parents: 40
diff changeset
   231
            iFs.Delete( task->iInstallParams->iPath );
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
            }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
        }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
    iQueue->CompleteTask( iCurrentTask, err );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
    TRACE_FUNC_EXIT;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
40
hgs
parents: 20
diff changeset
   239
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   240
// CSConAppInstaller::WriteTaskDataL()
hgs
parents: 20
diff changeset
   241
// Writes data to task
hgs
parents: 20
diff changeset
   242
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   243
//
hgs
parents: 20
diff changeset
   244
void CSConAppInstaller::WriteTaskDataL( CSConTask& aTask )
hgs
parents: 20
diff changeset
   245
    {
hgs
parents: 20
diff changeset
   246
    TRACE_FUNC_ENTRY;
hgs
parents: 20
diff changeset
   247
    CBufFlat* buffer = CBufFlat::NewL(200);
hgs
parents: 20
diff changeset
   248
    CleanupStack::PushL(buffer);
hgs
parents: 20
diff changeset
   249
    RBufWriteStream stream( *buffer );
hgs
parents: 20
diff changeset
   250
    CleanupClosePushL( stream );
hgs
parents: 20
diff changeset
   251
    
hgs
parents: 20
diff changeset
   252
    ExternalizeResultArrayIntValL( KSifOutParam_ComponentId , stream);
hgs
parents: 20
diff changeset
   253
    ExternalizeResultIntValL( KSifOutParam_ErrCategory , stream);
hgs
parents: 20
diff changeset
   254
    ExternalizeResultIntValL( KSifOutParam_ErrCode , stream);
64
hgs
parents: 40
diff changeset
   255
    //ExternalizeResultIntValL( KSifOutParam_ExtendedErrCode , stream);
40
hgs
parents: 20
diff changeset
   256
    ExternalizeResultStringValL( KSifOutParam_ErrMessage , stream);
hgs
parents: 20
diff changeset
   257
    ExternalizeResultStringValL( KSifOutParam_ErrMessageDetails , stream);
hgs
parents: 20
diff changeset
   258
    
hgs
parents: 20
diff changeset
   259
    stream.CommitL();
hgs
parents: 20
diff changeset
   260
    
hgs
parents: 20
diff changeset
   261
    buffer->Compress();
hgs
parents: 20
diff changeset
   262
    
hgs
parents: 20
diff changeset
   263
    HBufC8* data = HBufC8::NewL( buffer->Size() );
hgs
parents: 20
diff changeset
   264
    TPtr8 dataPtr = data->Des();
hgs
parents: 20
diff changeset
   265
    buffer->Read( 0, dataPtr, buffer->Size() );
hgs
parents: 20
diff changeset
   266
    
hgs
parents: 20
diff changeset
   267
    if ( aTask.GetServiceId() == EInstall )
hgs
parents: 20
diff changeset
   268
        {
hgs
parents: 20
diff changeset
   269
        if ( aTask.iInstallParams->iData )
hgs
parents: 20
diff changeset
   270
            {
hgs
parents: 20
diff changeset
   271
            delete aTask.iInstallParams->iData;
hgs
parents: 20
diff changeset
   272
            aTask.iInstallParams->iData = NULL;
hgs
parents: 20
diff changeset
   273
            }
hgs
parents: 20
diff changeset
   274
        aTask.iInstallParams->iData = data;
hgs
parents: 20
diff changeset
   275
        data = NULL;
hgs
parents: 20
diff changeset
   276
        }
hgs
parents: 20
diff changeset
   277
    else if ( aTask.GetServiceId() == EUninstall )
hgs
parents: 20
diff changeset
   278
        {
hgs
parents: 20
diff changeset
   279
        if ( aTask.iUninstallParams->iData )
hgs
parents: 20
diff changeset
   280
            {
hgs
parents: 20
diff changeset
   281
            delete aTask.iUninstallParams->iData;
hgs
parents: 20
diff changeset
   282
            aTask.iUninstallParams->iData = NULL;
hgs
parents: 20
diff changeset
   283
            }
hgs
parents: 20
diff changeset
   284
        aTask.iUninstallParams->iData = data;
hgs
parents: 20
diff changeset
   285
        data = NULL;
hgs
parents: 20
diff changeset
   286
        }
hgs
parents: 20
diff changeset
   287
    else
hgs
parents: 20
diff changeset
   288
        {
hgs
parents: 20
diff changeset
   289
        delete data;
hgs
parents: 20
diff changeset
   290
        data = NULL;
hgs
parents: 20
diff changeset
   291
        }
hgs
parents: 20
diff changeset
   292
    
hgs
parents: 20
diff changeset
   293
    CleanupStack::PopAndDestroy( &stream );
hgs
parents: 20
diff changeset
   294
    CleanupStack::PopAndDestroy( buffer );
hgs
parents: 20
diff changeset
   295
    TRACE_FUNC_EXIT;
hgs
parents: 20
diff changeset
   296
    }
hgs
parents: 20
diff changeset
   297
hgs
parents: 20
diff changeset
   298
void CSConAppInstaller::ExternalizeResultArrayIntValL( const TDesC& aName, RWriteStream& aStream )
hgs
parents: 20
diff changeset
   299
    {
hgs
parents: 20
diff changeset
   300
    TRACE_FUNC_ENTRY;
hgs
parents: 20
diff changeset
   301
    RArray<TInt> valueArray;
hgs
parents: 20
diff changeset
   302
    TRAPD(err, valueArray = iSifResults->IntArrayByNameL(aName));
hgs
parents: 20
diff changeset
   303
    if ( !err && valueArray.Count() > 0 )
hgs
parents: 20
diff changeset
   304
        {
hgs
parents: 20
diff changeset
   305
        LOGGER_WRITE_1("count: %d", valueArray.Count());
hgs
parents: 20
diff changeset
   306
        TBuf8<100> nameBuf;
hgs
parents: 20
diff changeset
   307
        err = CnvUtfConverter::ConvertFromUnicodeToUtf8( nameBuf, aName );
hgs
parents: 20
diff changeset
   308
        if (!err)
hgs
parents: 20
diff changeset
   309
            {
hgs
parents: 20
diff changeset
   310
            LOGGER_WRITE("2");
hgs
parents: 20
diff changeset
   311
            aStream.WriteL( nameBuf, nameBuf.Length() );
hgs
parents: 20
diff changeset
   312
            aStream.WriteL( KValSep, 1 );
hgs
parents: 20
diff changeset
   313
            aStream.WriteInt32L( valueArray[0] );
hgs
parents: 20
diff changeset
   314
            for (TInt i=1; i<valueArray.Count(); i++)
hgs
parents: 20
diff changeset
   315
                {
hgs
parents: 20
diff changeset
   316
                aStream.WriteL( KComma, 1 );
hgs
parents: 20
diff changeset
   317
                aStream.WriteInt32L( valueArray[i] );
hgs
parents: 20
diff changeset
   318
                }
hgs
parents: 20
diff changeset
   319
            aStream.WriteL( KLineEnd, 2 );
hgs
parents: 20
diff changeset
   320
            }
hgs
parents: 20
diff changeset
   321
        }
hgs
parents: 20
diff changeset
   322
    TRACE_FUNC_EXIT;
hgs
parents: 20
diff changeset
   323
    }
hgs
parents: 20
diff changeset
   324
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   325
// CSConAppInstaller::ExternalizeResultIntValL()
hgs
parents: 20
diff changeset
   326
// Read integer value and write it to stream
hgs
parents: 20
diff changeset
   327
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   328
//
hgs
parents: 20
diff changeset
   329
void CSConAppInstaller::ExternalizeResultIntValL( const TDesC& aName, RWriteStream& aStream )
hgs
parents: 20
diff changeset
   330
    {
hgs
parents: 20
diff changeset
   331
    TRACE_FUNC_ENTRY;
hgs
parents: 20
diff changeset
   332
    TInt value;
hgs
parents: 20
diff changeset
   333
    TBool found(EFalse);
hgs
parents: 20
diff changeset
   334
    found = iSifResults->GetIntByNameL(aName, value);
hgs
parents: 20
diff changeset
   335
hgs
parents: 20
diff changeset
   336
    if (found)
hgs
parents: 20
diff changeset
   337
        {
hgs
parents: 20
diff changeset
   338
        TBuf8<100> nameBuf;
hgs
parents: 20
diff changeset
   339
        TInt err = CnvUtfConverter::ConvertFromUnicodeToUtf8( nameBuf, aName );
hgs
parents: 20
diff changeset
   340
        if (!err)
hgs
parents: 20
diff changeset
   341
            {
hgs
parents: 20
diff changeset
   342
            aStream.WriteL( nameBuf, nameBuf.Length() );
hgs
parents: 20
diff changeset
   343
            aStream.WriteL( KValSep, 1 );
hgs
parents: 20
diff changeset
   344
            aStream.WriteInt32L( value );
hgs
parents: 20
diff changeset
   345
            aStream.WriteL( KLineEnd, 2 );
hgs
parents: 20
diff changeset
   346
            }
hgs
parents: 20
diff changeset
   347
        }
hgs
parents: 20
diff changeset
   348
    TRACE_FUNC_EXIT;
hgs
parents: 20
diff changeset
   349
    }
hgs
parents: 20
diff changeset
   350
hgs
parents: 20
diff changeset
   351
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   352
// CSConAppInstaller::ExternalizeResultStringValL()
hgs
parents: 20
diff changeset
   353
// Read string value and write it to stream
hgs
parents: 20
diff changeset
   354
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   355
//
hgs
parents: 20
diff changeset
   356
void CSConAppInstaller::ExternalizeResultStringValL( const TDesC& aName, RWriteStream& aStream )
hgs
parents: 20
diff changeset
   357
    {
hgs
parents: 20
diff changeset
   358
    TRACE_FUNC_ENTRY;
hgs
parents: 20
diff changeset
   359
    const TDesC& strValue = iSifResults->StringByNameL( aName );
hgs
parents: 20
diff changeset
   360
    if (strValue.Length() > 0)
hgs
parents: 20
diff changeset
   361
        {
hgs
parents: 20
diff changeset
   362
        TBuf8<100> nameBuf;
hgs
parents: 20
diff changeset
   363
        TInt err = CnvUtfConverter::ConvertFromUnicodeToUtf8( nameBuf, aName );
hgs
parents: 20
diff changeset
   364
        if (!err)
hgs
parents: 20
diff changeset
   365
            {
hgs
parents: 20
diff changeset
   366
            HBufC8* nameVal = CnvUtfConverter::ConvertFromUnicodeToUtf8L( strValue );
hgs
parents: 20
diff changeset
   367
            CleanupStack::PushL( nameVal );
hgs
parents: 20
diff changeset
   368
            aStream.WriteL( nameBuf, nameBuf.Length() );
hgs
parents: 20
diff changeset
   369
            aStream.WriteL( KValSep, 1 );
hgs
parents: 20
diff changeset
   370
            aStream.WriteL( nameVal->Des(), nameVal->Length() );
hgs
parents: 20
diff changeset
   371
            aStream.WriteL( KLineEnd, 2 );
hgs
parents: 20
diff changeset
   372
            CleanupStack::PopAndDestroy( nameVal );
hgs
parents: 20
diff changeset
   373
            }
hgs
parents: 20
diff changeset
   374
        }
hgs
parents: 20
diff changeset
   375
    TRACE_FUNC_EXIT;
hgs
parents: 20
diff changeset
   376
    }
hgs
parents: 20
diff changeset
   377
hgs
parents: 20
diff changeset
   378
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   379
// CSConAppInstaller::ProcessInstallL()
hgs
parents: 20
diff changeset
   380
// Executes Install task
hgs
parents: 20
diff changeset
   381
// -----------------------------------------------------------------------------
hgs
parents: 20
diff changeset
   382
//
hgs
parents: 20
diff changeset
   383
void CSConAppInstaller::ProcessInstallL( const CSConInstall& aInstallParams )
hgs
parents: 20
diff changeset
   384
    {
hgs
parents: 20
diff changeset
   385
    TRACE_FUNC_ENTRY;
hgs
parents: 20
diff changeset
   386
    iSifOptions->Cleanup();
hgs
parents: 20
diff changeset
   387
    iSifResults->Cleanup();
hgs
parents: 20
diff changeset
   388
    
hgs
parents: 20
diff changeset
   389
    if ( aInstallParams.iMode == ESilentInstall )
hgs
parents: 20
diff changeset
   390
        {
hgs
parents: 20
diff changeset
   391
        LOGGER_WRITE( "Begin silent installation.. " );
hgs
parents: 20
diff changeset
   392
        
hgs
parents: 20
diff changeset
   393
        iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );
64
hgs
parents: 40
diff changeset
   394
        iSifOptions->AddIntL( Usif::KSifInParam_PerformOCSP, Usif::ENotAllowed );   
40
hgs
parents: 20
diff changeset
   395
        // Note if upgrade is allowed, see NeedsInstallingL function.
64
hgs
parents: 40
diff changeset
   396
        iSifOptions->AddIntL( Usif::KSifInParam_AllowUpgrade, Usif::EAllowed );
hgs
parents: 40
diff changeset
   397
        iSifOptions->AddIntL( Usif::KSifInParam_AllowUntrusted, Usif::ENotAllowed );
hgs
parents: 40
diff changeset
   398
        iSifOptions->AddIntL( Usif::KSifInParam_GrantCapabilities, Usif::ENotAllowed ); 
40
hgs
parents: 20
diff changeset
   399
        // Defined for the install.
64
hgs
parents: 40
diff changeset
   400
        iSifOptions->AddIntL( Usif::KSifInParam_InstallOptionalItems, Usif::EAllowed );          
hgs
parents: 40
diff changeset
   401
        iSifOptions->AddIntL( Usif::KSifInParam_IgnoreOCSPWarnings, Usif::EAllowed );            
hgs
parents: 40
diff changeset
   402
        iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, Usif::EAllowed );
hgs
parents: 40
diff changeset
   403
        iSifOptions->AddIntL( Usif::KSifInParam_AllowDownload, Usif::EAllowed );
hgs
parents: 40
diff changeset
   404
        iSifOptions->AddIntL( Usif::KSifInParam_AllowOverwrite, Usif::EAllowed );
40
hgs
parents: 20
diff changeset
   405
hgs
parents: 20
diff changeset
   406
        iSwInstaller.Install( aInstallParams.iPath, *iSifOptions,
hgs
parents: 20
diff changeset
   407
                *iSifResults, iStatus, ETrue );
hgs
parents: 20
diff changeset
   408
        }
hgs
parents: 20
diff changeset
   409
    else
hgs
parents: 20
diff changeset
   410
        {
hgs
parents: 20
diff changeset
   411
        LOGGER_WRITE( "Begin to install.. " );
hgs
parents: 20
diff changeset
   412
        
hgs
parents: 20
diff changeset
   413
        iSwInstaller.Install( aInstallParams.iPath, *iSifOptions,
hgs
parents: 20
diff changeset
   414
                *iSifResults, iStatus, ETrue );
hgs
parents: 20
diff changeset
   415
        }
hgs
parents: 20
diff changeset
   416
    SetActive();
hgs
parents: 20
diff changeset
   417
    TRACE_FUNC_EXIT;
hgs
parents: 20
diff changeset
   418
    }
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
// CSConAppInstaller::ProcessUninstallL( const CSConUninstall& aUninstallParams )
40
hgs
parents: 20
diff changeset
   422
// Executes UnInstall task
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   423
// -----------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
void CSConAppInstaller::ProcessUninstallL( const CSConUninstall& aUninstallParams )
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
    TRACE_FUNC_ENTRY;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
    LOGGER_WRITE_1( "aUid: 0x%08x", aUninstallParams.iUid.iUid );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
    LOGGER_WRITE_1( "aName: %S", &aUninstallParams.iName );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   430
    LOGGER_WRITE_1( "aVendor: %S", &aUninstallParams.iVendor );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
    LOGGER_WRITE_1( "aType: %d", aUninstallParams.iType );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
    LOGGER_WRITE_1( "aMode: %d", aUninstallParams.iMode );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
    
40
hgs
parents: 20
diff changeset
   434
    if ( aUninstallParams.iUid == KSConSeConUid )
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
	    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
	    LOGGER_WRITE("Cannot uninstall itself, leave");
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
	    // cannot uninstall itself
40
hgs
parents: 20
diff changeset
   438
	    User::Leave( KErrInUse ); //SwiUI::KSWInstErrFileInUse );
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
	    }
40
hgs
parents: 20
diff changeset
   440
    TComponentId componentId = aUninstallParams.iUid.iUid;
hgs
parents: 20
diff changeset
   441
    iSifOptions->Cleanup();
hgs
parents: 20
diff changeset
   442
    iSifResults->Cleanup();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
    
40
hgs
parents: 20
diff changeset
   444
    if ( aUninstallParams.iMode == ESilentInstall)
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   445
        {
40
hgs
parents: 20
diff changeset
   446
        iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );
hgs
parents: 20
diff changeset
   447
        iSwInstaller.Uninstall( componentId, *iSifOptions, *iSifResults, iStatus, ETrue );
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
        }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
    else
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
        {
40
hgs
parents: 20
diff changeset
   451
        iSwInstaller.Uninstall( componentId, *iSifOptions, *iSifResults, iStatus, ETrue );
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
        }
40
hgs
parents: 20
diff changeset
   453
    SetActive();
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
    TRACE_FUNC_EXIT;
40
hgs
parents: 20
diff changeset
   455
    }
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   456
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   457
//--------------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   458
//void CSConAppInstaller::ProcessListInstalledAppsL()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   459
//--------------------------------------------------------------------------------
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   460
//
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   461
void CSConAppInstaller::ProcessListInstalledAppsL()
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   462
    {
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   463
    TRACE_FUNC_ENTRY;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   464
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   465
    CSConTask* task = NULL;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   466
    User::LeaveIfError( iQueue->GetTask( iCurrentTask, task ) );
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
    
64
hgs
parents: 40
diff changeset
   468
    CSConListInstApps& listInstApps = *task->iListAppsParams;
hgs
parents: 40
diff changeset
   469
    Usif::RSoftwareComponentRegistry scr;
hgs
parents: 40
diff changeset
   470
    User::LeaveIfError( scr.Connect() );
hgs
parents: 40
diff changeset
   471
    CleanupClosePushL( scr );
hgs
parents: 40
diff changeset
   472
    
hgs
parents: 40
diff changeset
   473
    RArray<Usif::TComponentId> componentList;
hgs
parents: 40
diff changeset
   474
    CleanupClosePushL( componentList );
hgs
parents: 40
diff changeset
   475
    Usif::CComponentFilter* filter = Usif::CComponentFilter::NewLC();
hgs
parents: 40
diff changeset
   476
    
hgs
parents: 40
diff changeset
   477
    if ( listInstApps.iAllApps )
hgs
parents: 40
diff changeset
   478
        {
hgs
parents: 40
diff changeset
   479
        TDriveList driveList;
hgs
parents: 40
diff changeset
   480
        // Get all drives that are visible to the user.
hgs
parents: 40
diff changeset
   481
        TInt driveCount;
hgs
parents: 40
diff changeset
   482
        User::LeaveIfError( DriveInfo::GetUserVisibleDrives( iFs, driveList, driveCount ) );
hgs
parents: 40
diff changeset
   483
        filter->SetInstalledDrivesL( driveList );
hgs
parents: 40
diff changeset
   484
        }
hgs
parents: 40
diff changeset
   485
    else
hgs
parents: 40
diff changeset
   486
        {
hgs
parents: 40
diff changeset
   487
        filter->SetInstalledDrivesL( listInstApps.iDriveList );
hgs
parents: 40
diff changeset
   488
        }
hgs
parents: 40
diff changeset
   489
            
hgs
parents: 40
diff changeset
   490
    scr.GetComponentIdsL( componentList, filter);
hgs
parents: 40
diff changeset
   491
    
hgs
parents: 40
diff changeset
   492
    CleanupStack::PopAndDestroy( filter );
hgs
parents: 40
diff changeset
   493
    LOGGER_WRITE_1("components found: %d", componentList.Count());
hgs
parents: 40
diff changeset
   494
    for (int i=0; i<componentList.Count(); i++)
hgs
parents: 40
diff changeset
   495
        {
hgs
parents: 40
diff changeset
   496
        Usif::CComponentEntry* entry = Usif::CComponentEntry::NewLC();
hgs
parents: 40
diff changeset
   497
        TBool found = scr.GetComponentL(componentList[i], *entry );
hgs
parents: 40
diff changeset
   498
        if (!found)
hgs
parents: 40
diff changeset
   499
            User::Leave(KErrNotFound);
hgs
parents: 40
diff changeset
   500
        
hgs
parents: 40
diff changeset
   501
        CSConInstApp* app = new (ELeave) CSConInstApp();
hgs
parents: 40
diff changeset
   502
        CleanupStack::PushL( app );
hgs
parents: 40
diff changeset
   503
        
hgs
parents: 40
diff changeset
   504
        StrCopyL( entry->Name(), app->iName );
hgs
parents: 40
diff changeset
   505
        StrCopyL( entry->Vendor(), app->iVendor );
hgs
parents: 40
diff changeset
   506
        app->iSize = entry->ComponentSize();
hgs
parents: 40
diff changeset
   507
        StrCopyL( entry->Version(), app->iVersion );
hgs
parents: 40
diff changeset
   508
        app->iWidgetBundleId = entry->GlobalId().AllocL();
hgs
parents: 40
diff changeset
   509
        
hgs
parents: 40
diff changeset
   510
        app->iUid.iUid = componentList[i];
hgs
parents: 40
diff changeset
   511
        
hgs
parents: 40
diff changeset
   512
        if ( entry->SoftwareType().Match( Usif::KSoftwareTypeNative ) == 0 )
hgs
parents: 40
diff changeset
   513
            {
hgs
parents: 40
diff changeset
   514
            app->iType = ESisApplication;
hgs
parents: 40
diff changeset
   515
            }
hgs
parents: 40
diff changeset
   516
        else if ( entry->SoftwareType().Match( Usif::KSoftwareTypeJava ) == 0 )
hgs
parents: 40
diff changeset
   517
            {
hgs
parents: 40
diff changeset
   518
            app->iType = EJavaApplication;
hgs
parents: 40
diff changeset
   519
            }
hgs
parents: 40
diff changeset
   520
        else if ( entry->SoftwareType().Match( Usif::KSoftwareTypeWidget ) == 0 )
hgs
parents: 40
diff changeset
   521
            {
hgs
parents: 40
diff changeset
   522
            app->iType = EWidgetApplication;
hgs
parents: 40
diff changeset
   523
            }
hgs
parents: 40
diff changeset
   524
        
hgs
parents: 40
diff changeset
   525
        User::LeaveIfError( listInstApps.iApps.Append( app ) );
hgs
parents: 40
diff changeset
   526
        CleanupStack::Pop( app );
hgs
parents: 40
diff changeset
   527
            
hgs
parents: 40
diff changeset
   528
        CleanupStack::PopAndDestroy( entry );
hgs
parents: 40
diff changeset
   529
        }
hgs
parents: 40
diff changeset
   530
    CleanupStack::PopAndDestroy( &componentList );
hgs
parents: 40
diff changeset
   531
    CleanupStack::PopAndDestroy( &scr );
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   532
    
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   533
    TRACE_FUNC_EXIT;
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   534
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   535
64
hgs
parents: 40
diff changeset
   536
void CSConAppInstaller::StrCopyL( const TDesC& aSrc, TDes& aDest )
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   537
    {
64
hgs
parents: 40
diff changeset
   538
    if (aSrc.Size() > aDest.MaxSize())
hgs
parents: 40
diff changeset
   539
        User::Leave(KErrTooBig);
hgs
parents: 40
diff changeset
   540
    aDest.Copy( aSrc );
19
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   541
    }
2691f6aa1921 Revision: 201005
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
// End of file