appinstaller/AppinstUi/startuplistupdater/src/startuplistupdater.cpp
author hgs
Wed, 20 Oct 2010 14:52:56 +0300
changeset 80 9dcba1ee99f7
parent 37 6e7b00453237
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
8110bf1194d1 Revision: 201017
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".
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:  Startup list updater implementation.
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include "startuplistupdater.h"         // CStartupListUpdater
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
#include "cleanupresetanddestroy.h"     // CleanupResetAndDestroyPushL
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <featmgr.h>                    // FeatureManager
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <driveinfo.h>                  // DriveInfo
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <barsc.h>                      // RResourceFile
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <barsread.h>                   // TResourceReader
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <StartupItem.hrh>              // EStartupItemExPolicyNone
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <dscitem.h>                    // CDscItem
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
#include <swi/sisregistrysession.h>     // Swi::RSisRegistrySession
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
#include <swi/sisregistrypackage.h>     // Swi::CSisRegistryPackage
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
#include <swi/sisregistryentry.h>       // Swi::RSisRegistryEntry
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
    29
#include <swi/sistruststatus.h>         // Swi::TSisTrustStatus::IsTrusted
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
_LIT( KImport, "import\\" );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
_LIT( KDriveAndPathFormat, "%c:%S" );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
_LIT( KResourceFileSpec, "c:*.rsc" );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
_LIT( KExecutableExtension, ".exe" );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
_LIT( KAsterisk, "*" );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
const TInt KDriveSpecLength = 2;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
const TInt KFirstStartupItemInfo = 1;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
80
hgs
parents: 37
diff changeset
    40
#ifdef _DEBUG
hgs
parents: 37
diff changeset
    41
#define FLOG(x)         RDebug::Print(x);
hgs
parents: 37
diff changeset
    42
#define FLOG_1(x,y)     RDebug::Print(x, y);
hgs
parents: 37
diff changeset
    43
#define FLOG_2(x,y,z)   RDebug::Print(x, y, z);
hgs
parents: 37
diff changeset
    44
#define FLOG_3(x,y,z,v) RDebug::Print(x, y, z, v);
hgs
parents: 37
diff changeset
    45
#else
hgs
parents: 37
diff changeset
    46
#define FLOG(x)
hgs
parents: 37
diff changeset
    47
#define FLOG_1(x,y)
hgs
parents: 37
diff changeset
    48
#define FLOG_2(x,y,z)
hgs
parents: 37
diff changeset
    49
#define FLOG_3(x,y,z,v)
hgs
parents: 37
diff changeset
    50
#endif
hgs
parents: 37
diff changeset
    51
hgs
parents: 37
diff changeset
    52
_LIT( KDevTraceDir, "c:\\data\\logs\\swinst\\" );
hgs
parents: 37
diff changeset
    53
_LIT( KDevTraceFile, "startuplistmgmt.log" );
hgs
parents: 37
diff changeset
    54
const TInt KDevTraceBuffer = 256;
hgs
parents: 37
diff changeset
    55
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
// ======== LOCAL FUNCTIONS ========
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    59
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
// FileNamesEqual()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    61
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
TBool FileNamesEqual( const HBufC& aFile1, const HBufC& aFile2 )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    64
    {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    65
    return ( aFile1.CompareF( aFile2 ) == 0 );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    68
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
// ======== MEMBER FUNCTIONS ========
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
// CStartupListUpdater::NewL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
CStartupListUpdater* CStartupListUpdater::NewL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
    {
80
hgs
parents: 37
diff changeset
    77
    FLOG( _L("CStartupListUpdater::NewL") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
    CStartupListUpdater* self = new( ELeave ) CStartupListUpdater;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
    CleanupStack::PushL( self );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
    self->ConstructL();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
    CleanupStack::Pop( self );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
    return self;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    84
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    85
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    86
// CStartupListUpdater::~CStartupListUpdater()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
CStartupListUpdater::~CStartupListUpdater()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    90
    {
80
hgs
parents: 37
diff changeset
    91
    FLOG( _L("CStartupListUpdater::~CStartupListUpdater") );
hgs
parents: 37
diff changeset
    92
    iLogFile.Close();
hgs
parents: 37
diff changeset
    93
    iFileBuf.Close();
hgs
parents: 37
diff changeset
    94
    delete iLogBuf;
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
    delete iPrivateImportPath;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    96
    iFs.Close();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
    FeatureManager::UnInitializeLib();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
// CStartupListUpdater::UpdateStartupListL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
void CStartupListUpdater::UpdateStartupListL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
    {
80
hgs
parents: 37
diff changeset
   107
    FLOG( _L("CStartupListUpdater::UpdateStartupListL") );
hgs
parents: 37
diff changeset
   108
    if( FeatureManager::FeatureSupported( KFeatureIdExtendedStartup ) )
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   110
        ProcessImportsAndUninstallsL();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
// CStartupListUpdater::CStartupListUpdater()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
CStartupListUpdater::CStartupListUpdater()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
    {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
// CStartupListUpdater::ConstructL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
void CStartupListUpdater::ConstructL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    {
80
hgs
parents: 37
diff changeset
   128
    FLOG( _L("CStartupListUpdater::ConstructL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
    FeatureManager::InitializeLibL();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
    User::LeaveIfError( iFs.Connect() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
    TInt err = iFs.MkDirAll( PrivateImportPathL() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
    if( err != KErrNone && err != KErrAlreadyExists )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
        {
80
hgs
parents: 37
diff changeset
   135
        FLOG_1( _L("CStartupListUpdater::ConstructL, err %d"), err );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
        User::Leave( err );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   137
        }
80
hgs
parents: 37
diff changeset
   138
    FLOG( _L("CStartupListUpdater::ConstructL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
// CStartupListUpdater::PrivateImportPathL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
const TDesC& CStartupListUpdater::PrivateImportPathL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
    {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
    if( !iPrivateImportPath )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
        TFileName privateImportPath;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
        User::LeaveIfError( iFs.PrivatePath( privateImportPath ) );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
        privateImportPath.Append( KImport );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
        TInt driveNumber;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
        TInt err = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultSystem, driveNumber );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
        User::LeaveIfError( err );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
        TChar driveLetter;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
        User::LeaveIfError( RFs::DriveToChar( driveNumber, driveLetter ) );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
        iPrivateImportPath = HBufC::NewL( KDriveSpecLength + privateImportPath.Length() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
        TPtr ptr( iPrivateImportPath->Des() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
        ptr.Format( KDriveAndPathFormat, static_cast< TUint >( driveLetter ), &privateImportPath );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
        }
80
hgs
parents: 37
diff changeset
   163
    FLOG_1( _L("CStartupListUpdater::PrivateImportPathL %S"), iPrivateImportPath );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
    return *iPrivateImportPath;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
// CStartupListUpdater::ProcessImportsAndUninstallsL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
void CStartupListUpdater::ProcessImportsAndUninstallsL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
    {
80
hgs
parents: 37
diff changeset
   173
    FLOG( _L("CStartupListUpdater::ProcessImportsAndUninstallsL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   174
    RDscStore dscStore;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
    OpenDscStoreLC( dscStore );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
80
hgs
parents: 37
diff changeset
   177
    TRAPD( err, ImportNewResourceFilesL( dscStore ) );
hgs
parents: 37
diff changeset
   178
    if( err )
hgs
parents: 37
diff changeset
   179
        {
hgs
parents: 37
diff changeset
   180
        DevTrace( _L("Error: import failed, error code %d"), err );
hgs
parents: 37
diff changeset
   181
        User::Leave( err );
hgs
parents: 37
diff changeset
   182
        }
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   183
    DeregisterUninstalledAppsL( dscStore );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
    CleanupStack::PopAndDestroy( &dscStore );
80
hgs
parents: 37
diff changeset
   186
    FLOG( _L("CStartupListUpdater::ProcessImportsAndUninstallsL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
// CStartupListUpdater::OpenDscStoreLC()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
void CStartupListUpdater::OpenDscStoreLC( RDscStore& aDscStore )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
    {
80
hgs
parents: 37
diff changeset
   195
    FLOG( _L("CStartupListUpdater::OpenDscStoreLC") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
    if( !aDscStore.IsOpened() )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
        aDscStore.OpenL();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
        CleanupClosePushL( aDscStore );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
        if( !aDscStore.DscExistsL() )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   201
            {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
            aDscStore.CreateDscL();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    else
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
        {
80
hgs
parents: 37
diff changeset
   207
        FLOG( _L("CStartupListUpdater::OpenDscStoreLC, KErrAlreadyExists") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
        User::Leave( KErrAlreadyExists );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
// CStartupListUpdater::ImportNewResourceFilesL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
void CStartupListUpdater::ImportNewResourceFilesL( RDscStore& aDscStore )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
    {
80
hgs
parents: 37
diff changeset
   218
    FLOG( _L("CStartupListUpdater::ImportNewResourceFilesL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   219
    RPointerArray<HBufC> executableArray;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
    CleanupResetAndDestroyPushL( executableArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
    RPointerArray<HBufC> resourceFileArray;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
    CleanupResetAndDestroyPushL( resourceFileArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
    GetDataToBeImportedL( executableArray, resourceFileArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
    ImportExecutablesL( aDscStore, executableArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
    RemoveImportedResourceFiles( resourceFileArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
    CleanupStack::PopAndDestroy( 2, &executableArray );
80
hgs
parents: 37
diff changeset
   229
    FLOG( _L("CStartupListUpdater::ImportNewResourceFilesL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
// CStartupListUpdater::DeregisterUninstalledAppsL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   234
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   236
void CStartupListUpdater::DeregisterUninstalledAppsL( RDscStore& aDscStore )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
    {
80
hgs
parents: 37
diff changeset
   238
    FLOG( _L("CStartupListUpdater::DeregisterUninstalledAppsL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   239
    RPointerArray<HBufC> startedAtBootArray;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
    CleanupResetAndDestroyPushL( startedAtBootArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   241
    RPointerArray<HBufC> installedArray;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
    CleanupResetAndDestroyPushL( installedArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
    RPointerArray<HBufC> startedNotInstalled;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
    CleanupResetAndDestroyPushL( startedNotInstalled );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
    GetStartupListAppsL( aDscStore, startedAtBootArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
    GetInstalledAppsL( installedArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
    StartedButNotInstalledAppsL( startedAtBootArray, installedArray, startedNotInstalled );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   249
    RemoveFromStartupListL( aDscStore, startedNotInstalled );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
    CleanupStack::PopAndDestroy( 3, &startedAtBootArray );
80
hgs
parents: 37
diff changeset
   252
    FLOG( _L("CStartupListUpdater::DeregisterUninstalledAppsL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
// CStartupListUpdater::GetDataToBeImportedL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
void CStartupListUpdater::GetDataToBeImportedL(
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
        RPointerArray<HBufC>& aExecutableArray,
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
        RPointerArray<HBufC>& aResourceFileArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
    {
80
hgs
parents: 37
diff changeset
   263
    FLOG( _L("CStartupListUpdater::GetDataToBeImportedL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
    TParse resourceFiles;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
    User::LeaveIfError( resourceFiles.Set( KResourceFileSpec, &PrivateImportPathL(), NULL ) );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
    const TPtrC importDir( resourceFiles.FullName() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
    CDir* dir;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
    User::LeaveIfError( iFs.GetDir( importDir, KEntryAttMaskSupported, ESortNone, dir ) );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
    CleanupStack::PushL( dir );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
    for( TInt index = 0; index < dir->Count(); ++index )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
        TFileName resourceFile;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
        TInt lastSeparator = importDir.LocateReverse( '\\' );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
        if( lastSeparator > 0 )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
            {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
            resourceFile.Copy( importDir.Mid( 0, lastSeparator + 1 ) );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
            resourceFile.Append( ( *dir )[ index ].iName );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
            aResourceFileArray.AppendL( resourceFile.AllocL() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   281
            AppendExecutablesFromResourceFileL( resourceFile, aExecutableArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   282
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   283
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   284
    CleanupStack::PopAndDestroy( dir );
80
hgs
parents: 37
diff changeset
   285
    FLOG( _L("CStartupListUpdater::GetDataToBeImportedL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
// CStartupListUpdater::ImportExecutablesL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
void CStartupListUpdater::ImportExecutablesL( RDscStore& aDscStore,
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
        RPointerArray<HBufC>& aExecutableArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
    {
80
hgs
parents: 37
diff changeset
   295
    FLOG( _L("CStartupListUpdater::ImportExecutablesL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
    for( TInt index = 0; index < aExecutableArray.Count(); ++index )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
        const TDesC& executableName = *( aExecutableArray[ index ] );
80
hgs
parents: 37
diff changeset
   299
        FLOG_1( _L("CStartupListUpdater::ImportExecutablesL, exe %S"), &executableName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
        CDscItem* item = CDscItem::NewLC( executableName, KNullDesC );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
        if( !aDscStore.ItemExistsL( *item ) )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
            {
80
hgs
parents: 37
diff changeset
   303
            FLOG( _L("CStartupListUpdater::ImportExecutablesL, add item to DscStore") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   304
            aDscStore.AddItemL( *item );
80
hgs
parents: 37
diff changeset
   305
            DevTrace( _L("Success: '%S' will be started at boot"), &executableName );
hgs
parents: 37
diff changeset
   306
            }
hgs
parents: 37
diff changeset
   307
        else
hgs
parents: 37
diff changeset
   308
            {
hgs
parents: 37
diff changeset
   309
            DevTrace( _L("Error: '%S' already in start list"), &executableName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
        CleanupStack::PopAndDestroy( item );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
        }
80
hgs
parents: 37
diff changeset
   313
    FLOG( _L("CStartupListUpdater::ImportExecutablesL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
// CStartupListUpdater::RemoveImportedResourceFiles()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
void CStartupListUpdater::RemoveImportedResourceFiles(
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   321
        RPointerArray<HBufC>& aResourceFileArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   322
    {
80
hgs
parents: 37
diff changeset
   323
    FLOG( _L("CStartupListUpdater::RemoveImportedResourceFiles, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   324
    for( TInt index = 0; index < aResourceFileArray.Count(); ++index )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   325
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   326
        const TDesC& fileName = *( aResourceFileArray[ index ] );
80
hgs
parents: 37
diff changeset
   327
        FLOG_1( _L("CStartupListUpdater::RemoveImportedResourceFiles, deleting %S"), &fileName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   328
        TInt err = iFs.Delete( fileName );
80
hgs
parents: 37
diff changeset
   329
        FLOG_1( _L("CStartupListUpdater::RemoveImportedResourceFiles, err %d"), err );
hgs
parents: 37
diff changeset
   330
        if( !err )
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   331
            {
80
hgs
parents: 37
diff changeset
   332
            DevTrace( _L("Resource file '%S' processed"), &fileName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   333
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   334
        }
80
hgs
parents: 37
diff changeset
   335
    FLOG( _L("CStartupListUpdater::RemoveImportedResourceFiles, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   336
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   337
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
// CStartupListUpdater::AppendExecutablesFromResourceFileL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
void CStartupListUpdater::AppendExecutablesFromResourceFileL(
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   343
        const TDesC& aResourceFile,
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
        RPointerArray<HBufC>& aExecutableArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
    {
80
hgs
parents: 37
diff changeset
   346
    FLOG( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, begin") );
hgs
parents: 37
diff changeset
   347
    OpenDevTraceL();
hgs
parents: 37
diff changeset
   348
    DevTrace( _L("Processing resource file: %S"), &aResourceFile );
hgs
parents: 37
diff changeset
   349
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
    RResourceFile resource;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
    CleanupClosePushL( resource );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
    resource.OpenL( iFs, aResourceFile );
80
hgs
parents: 37
diff changeset
   353
    FLOG_1( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, %S"), &aResourceFile );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   355
    for( TInt id = KFirstStartupItemInfo; resource.OwnsResourceId( id ); ++id )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
        {
80
hgs
parents: 37
diff changeset
   357
        FLOG_1( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, resource id %d"), id );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
        HBufC8* buffer = resource.AllocReadLC( id );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
        TResourceReader reader;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   361
        reader.SetBuffer( buffer );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
        // Read STARTUP_ITEM_INFO
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   364
        TInt versionInfo = reader.ReadUint8();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
        TFileName executableName;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
        executableName.Copy( reader.ReadTPtrC() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
        TInt recoveryPolicy = reader.ReadUint16();
80
hgs
parents: 37
diff changeset
   368
        FLOG_1( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, executableName %S"),
hgs
parents: 37
diff changeset
   369
                &executableName );
hgs
parents: 37
diff changeset
   370
        FLOG_1( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, recoveryPolicy %d"),
hgs
parents: 37
diff changeset
   371
                recoveryPolicy );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   372
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   373
        CleanupStack::PopAndDestroy( buffer );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   374
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   375
        if( versionInfo == 0 && recoveryPolicy == EStartupItemExPolicyNone )
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
            {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
            // PKG files use '!' for drive letters that user can decide at installation time
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
            if( executableName.Length() > 0 && executableName[ 0 ] == '!' )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
                {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
                executableName.Replace( 0, 1, KAsterisk );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
                TFindFile fileFinder( iFs );
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   383
                CDir* executableDir;            // next FindWildByDir needs AllFiles capability
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   384
                TInt err = fileFinder.FindWildByDir( executableName, KNullDesC, executableDir );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
                if( !err )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
                    {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
                    CleanupStack::PushL( executableDir );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
                    executableName.Replace( 0, 1, fileFinder.File() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
                    CleanupStack::PopAndDestroy( executableDir );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
                    }
80
hgs
parents: 37
diff changeset
   391
hgs
parents: 37
diff changeset
   392
                FLOG_1( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, new name %S"),
hgs
parents: 37
diff changeset
   393
                        &executableName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
                }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   395
80
hgs
parents: 37
diff changeset
   396
            DevTrace( _L("Executable file: %S"), &executableName );
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   397
            if( IsValidExecutableForStartupL( aResourceFile, executableName ) )
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
                {
80
hgs
parents: 37
diff changeset
   399
                FLOG( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, adding to array") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
                aExecutableArray.AppendL( executableName.AllocL() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
                }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
            }
80
hgs
parents: 37
diff changeset
   403
        else
hgs
parents: 37
diff changeset
   404
            {
hgs
parents: 37
diff changeset
   405
            if( versionInfo != 0 )
hgs
parents: 37
diff changeset
   406
                {
hgs
parents: 37
diff changeset
   407
                DevTrace( _L("Error: unsupported STARTUP_ITEM_INFO version: %d"), versionInfo );
hgs
parents: 37
diff changeset
   408
                }
hgs
parents: 37
diff changeset
   409
            else
hgs
parents: 37
diff changeset
   410
                {
hgs
parents: 37
diff changeset
   411
                DevTrace( _L("Error: unsupported recovery policy: %d"), recoveryPolicy );
hgs
parents: 37
diff changeset
   412
                }
hgs
parents: 37
diff changeset
   413
            }
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   414
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
    CleanupStack::PopAndDestroy( &resource );
80
hgs
parents: 37
diff changeset
   417
    FLOG( _L("CStartupListUpdater::AppendExecutablesFromResourceFileL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   419
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
// ---------------------------------------------------------------------------
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   421
// CStartupListUpdater::IsValidExecutableForStartupL()
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   422
// ---------------------------------------------------------------------------
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   423
//
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   424
TBool CStartupListUpdater::IsValidExecutableForStartupL( const TDesC& aResourceFile,
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   425
        const TDesC& aExecutableName )
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   426
    {
80
hgs
parents: 37
diff changeset
   427
    FLOG( _L("CStartupListUpdater::IsValidExecutableForStartupL, begin") );
hgs
parents: 37
diff changeset
   428
    FLOG_1( _L("CStartupListUpdater::IsValidExecutableForStartupL, res %S"), &aResourceFile );
hgs
parents: 37
diff changeset
   429
    FLOG_1( _L("CStartupListUpdater::IsValidExecutableForStartupL, exe %S"), &aExecutableName );
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   430
    TBool isValid = EFalse;
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   431
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   432
    TEntry entry;
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   433
    if( iFs.Entry( aExecutableName, entry ) == KErrNone )   // needs AllFiles capability
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   434
        {
80
hgs
parents: 37
diff changeset
   435
        FLOG( _L("CStartupListUpdater::IsValidExecutableForStartupL, exe file exists") );
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   436
80
hgs
parents: 37
diff changeset
   437
        TUid packageUid = KNullUid;
hgs
parents: 37
diff changeset
   438
        ExtractPackageUidFromResourceFileL( aResourceFile, packageUid );
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   439
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   440
        if( packageUid != KNullUid )
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   441
            {
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   442
            Swi::RSisRegistrySession sisRegSession;
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   443
            User::LeaveIfError( sisRegSession.Connect() );
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   444
            CleanupClosePushL( sisRegSession );
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   445
80
hgs
parents: 37
diff changeset
   446
            isValid = IsResourceFileValidForPackageL( sisRegSession, aResourceFile, packageUid ) &&
hgs
parents: 37
diff changeset
   447
                    IsExeFileIncludedInPackageL( sisRegSession, aExecutableName, packageUid );
hgs
parents: 37
diff changeset
   448
hgs
parents: 37
diff changeset
   449
            CleanupStack::PopAndDestroy( &sisRegSession );
hgs
parents: 37
diff changeset
   450
            }
hgs
parents: 37
diff changeset
   451
        else
hgs
parents: 37
diff changeset
   452
            {
hgs
parents: 37
diff changeset
   453
            DevTrace( _L("Error: invalid package UID - check resource file name") );
hgs
parents: 37
diff changeset
   454
            }
hgs
parents: 37
diff changeset
   455
        }
hgs
parents: 37
diff changeset
   456
    else
hgs
parents: 37
diff changeset
   457
        {
hgs
parents: 37
diff changeset
   458
        DevTrace( _L("Error: executable file '%S' not found"), &aExecutableName );
hgs
parents: 37
diff changeset
   459
        }
hgs
parents: 37
diff changeset
   460
hgs
parents: 37
diff changeset
   461
    FLOG_1( _L("CStartupListUpdater::IsValidExecutableForStartupL, return %d"), isValid );
hgs
parents: 37
diff changeset
   462
    return isValid;
hgs
parents: 37
diff changeset
   463
    }
hgs
parents: 37
diff changeset
   464
hgs
parents: 37
diff changeset
   465
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   466
// CStartupListUpdater::ExtractPackageUidFromResourceFileL()
hgs
parents: 37
diff changeset
   467
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   468
//
hgs
parents: 37
diff changeset
   469
void CStartupListUpdater::ExtractPackageUidFromResourceFileL( const TDesC& aResourceFile,
hgs
parents: 37
diff changeset
   470
        TUid& aPackageUid )
hgs
parents: 37
diff changeset
   471
    {
hgs
parents: 37
diff changeset
   472
    FLOG( _L("CStartupListUpdater::ExtractPackageUidFromResourceFileL, begin") );
hgs
parents: 37
diff changeset
   473
hgs
parents: 37
diff changeset
   474
    // Extract package UID from the resource file name
hgs
parents: 37
diff changeset
   475
    // - allow both "[1234ABCD]" and "1234ABCD" formats
hgs
parents: 37
diff changeset
   476
    // - allow possible "0x" prefix too
hgs
parents: 37
diff changeset
   477
    aPackageUid = KNullUid;
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   478
80
hgs
parents: 37
diff changeset
   479
    TParse parse;
hgs
parents: 37
diff changeset
   480
    parse.Set( aResourceFile, NULL, NULL );
hgs
parents: 37
diff changeset
   481
    TPtrC parseName = parse.Name();
hgs
parents: 37
diff changeset
   482
    TInt fileNameLength = parseName.Length();
hgs
parents: 37
diff changeset
   483
    if( !parse.IsNameWild() && fileNameLength > 0 )
hgs
parents: 37
diff changeset
   484
        {
hgs
parents: 37
diff changeset
   485
        TPtr fileName( const_cast<TUint16*>( parseName.Ptr() ),
hgs
parents: 37
diff changeset
   486
            fileNameLength, fileNameLength );
hgs
parents: 37
diff changeset
   487
hgs
parents: 37
diff changeset
   488
        if( fileName[ 0 ] == '[' && fileName[ fileNameLength - 1 ] == ']' )
hgs
parents: 37
diff changeset
   489
            {
hgs
parents: 37
diff changeset
   490
            const TInt KTwoCharsLength = 2;
hgs
parents: 37
diff changeset
   491
            fileNameLength -= KTwoCharsLength;
hgs
parents: 37
diff changeset
   492
            fileName = fileName.Mid( 1, fileNameLength );
hgs
parents: 37
diff changeset
   493
            }
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   494
80
hgs
parents: 37
diff changeset
   495
        _LIT( KHexPrefix, "0x" );
hgs
parents: 37
diff changeset
   496
        const TInt KHexPrefixLength = 2;
hgs
parents: 37
diff changeset
   497
        if( fileName.Left( KHexPrefixLength ) == KHexPrefix )
hgs
parents: 37
diff changeset
   498
            {
hgs
parents: 37
diff changeset
   499
            fileNameLength -= KHexPrefixLength;
hgs
parents: 37
diff changeset
   500
            fileName = fileName.Mid( KHexPrefixLength, fileNameLength );
hgs
parents: 37
diff changeset
   501
            }
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   502
80
hgs
parents: 37
diff changeset
   503
        FLOG_1( _L("CStartupListUpdater::ExtractPackageUidFromResourceFileL, fileName %S"),
hgs
parents: 37
diff changeset
   504
                &fileName );
hgs
parents: 37
diff changeset
   505
        TLex lex( fileName );
hgs
parents: 37
diff changeset
   506
        TUint32 uidValue = 0;
hgs
parents: 37
diff changeset
   507
        TInt lexError = lex.Val( uidValue, EHex );
hgs
parents: 37
diff changeset
   508
        if( !lexError )
hgs
parents: 37
diff changeset
   509
            {
hgs
parents: 37
diff changeset
   510
            aPackageUid.iUid = uidValue;
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   511
            }
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   512
        }
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   513
80
hgs
parents: 37
diff changeset
   514
    FLOG_1( _L("CStartupListUpdater::ExtractPackageUidFromResourceFileL, end, ret 0x%08x"),
hgs
parents: 37
diff changeset
   515
            aPackageUid.iUid );
hgs
parents: 37
diff changeset
   516
    }
hgs
parents: 37
diff changeset
   517
hgs
parents: 37
diff changeset
   518
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   519
// CStartupListUpdater::IsResourceFileValidForPackageL()
hgs
parents: 37
diff changeset
   520
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   521
//
hgs
parents: 37
diff changeset
   522
TBool CStartupListUpdater::IsResourceFileValidForPackageL(
hgs
parents: 37
diff changeset
   523
        Swi::RSisRegistrySession& aSisRegSession,
hgs
parents: 37
diff changeset
   524
        const TDesC& aResourceFile,
hgs
parents: 37
diff changeset
   525
        const TUid& aPackageUid )
hgs
parents: 37
diff changeset
   526
    {
hgs
parents: 37
diff changeset
   527
    FLOG( _L("CStartupListUpdater::IsResourceFileValidForPackageL, begin") );
hgs
parents: 37
diff changeset
   528
    TBool isValidForPackage = EFalse;
hgs
parents: 37
diff changeset
   529
hgs
parents: 37
diff changeset
   530
    // Get package info from RSisRegistry, and check that
hgs
parents: 37
diff changeset
   531
    // - the package contains the resource file, and
hgs
parents: 37
diff changeset
   532
    // - the package is properly signed
hgs
parents: 37
diff changeset
   533
hgs
parents: 37
diff changeset
   534
    Swi::RSisRegistryEntry package;
hgs
parents: 37
diff changeset
   535
    CleanupClosePushL( package );
hgs
parents: 37
diff changeset
   536
    TInt openError = package.Open( aSisRegSession, aPackageUid );
hgs
parents: 37
diff changeset
   537
    FLOG_1( _L("CStartupListUpdater::IsResourceFileValidForPackageL, openError %d"), openError );
hgs
parents: 37
diff changeset
   538
    if( !openError )
hgs
parents: 37
diff changeset
   539
        {
hgs
parents: 37
diff changeset
   540
        Swi::TSisTrustStatus trustStatus = package.TrustStatusL();
hgs
parents: 37
diff changeset
   541
        Swi::TValidationStatus validationStatus = trustStatus.ValidationStatus();
hgs
parents: 37
diff changeset
   542
        FLOG_1( _L("CStartupListUpdater::IsResourceFileValidForPackageL, validationStatus %d"),
hgs
parents: 37
diff changeset
   543
                validationStatus );
hgs
parents: 37
diff changeset
   544
        Swi::TRevocationStatus revocationStatus = trustStatus.RevocationStatus();
hgs
parents: 37
diff changeset
   545
        FLOG_1( _L("CStartupListUpdater::IsResourceFileValidForPackageL, revocationStatus %d"),
hgs
parents: 37
diff changeset
   546
                revocationStatus );
hgs
parents: 37
diff changeset
   547
        TBool isTrusted = (validationStatus == Swi::EPackageInRom ||
hgs
parents: 37
diff changeset
   548
                validationStatus == Swi::EValidatedToAnchor) &&
hgs
parents: 37
diff changeset
   549
                revocationStatus != Swi::EOcspRevoked;
hgs
parents: 37
diff changeset
   550
        FLOG_1( _L("CStartupListUpdater::IsResourceFileValidForPackageL, isTrusted %d"),
hgs
parents: 37
diff changeset
   551
                isTrusted );
hgs
parents: 37
diff changeset
   552
hgs
parents: 37
diff changeset
   553
        if( isTrusted )
hgs
parents: 37
diff changeset
   554
            {
hgs
parents: 37
diff changeset
   555
            isValidForPackage = IsFileIncludedInPackageL( aResourceFile, package );
hgs
parents: 37
diff changeset
   556
hgs
parents: 37
diff changeset
   557
            if( !isValidForPackage )
hgs
parents: 37
diff changeset
   558
                {
hgs
parents: 37
diff changeset
   559
                DevTrace( _L("Error: package 0x%08x does not install resource file %S"),
hgs
parents: 37
diff changeset
   560
                        aPackageUid.iUid, &aResourceFile );
hgs
parents: 37
diff changeset
   561
                }
hgs
parents: 37
diff changeset
   562
            }
hgs
parents: 37
diff changeset
   563
        else
hgs
parents: 37
diff changeset
   564
            {
hgs
parents: 37
diff changeset
   565
            DevTrace( _L("Error: package 0x%08x not trusted"), aPackageUid.iUid );
hgs
parents: 37
diff changeset
   566
            }
hgs
parents: 37
diff changeset
   567
        }
hgs
parents: 37
diff changeset
   568
    else
hgs
parents: 37
diff changeset
   569
        {
hgs
parents: 37
diff changeset
   570
        DevTrace( _L("Error: package 0x%08x open failed, error %d - check resource file name"),
hgs
parents: 37
diff changeset
   571
                aPackageUid.iUid, openError );
hgs
parents: 37
diff changeset
   572
        }
hgs
parents: 37
diff changeset
   573
hgs
parents: 37
diff changeset
   574
    CleanupStack::PopAndDestroy( &package );
hgs
parents: 37
diff changeset
   575
hgs
parents: 37
diff changeset
   576
    FLOG_1( _L("CStartupListUpdater::IsResourceFileValidForPackageL, ret %d"), isValidForPackage );
hgs
parents: 37
diff changeset
   577
    return isValidForPackage;
hgs
parents: 37
diff changeset
   578
    }
hgs
parents: 37
diff changeset
   579
hgs
parents: 37
diff changeset
   580
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   581
// CStartupListUpdater::IsFileIncludedInPackageL()
hgs
parents: 37
diff changeset
   582
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   583
//
hgs
parents: 37
diff changeset
   584
TBool CStartupListUpdater::IsFileIncludedInPackageL( const TDesC& aFile,
hgs
parents: 37
diff changeset
   585
        Swi::RSisRegistryEntry& aPackage )
hgs
parents: 37
diff changeset
   586
    {
hgs
parents: 37
diff changeset
   587
    FLOG_1( _L("CStartupListUpdater::IsFileIncludedInPackageL, begin, file %S"), &aFile );
hgs
parents: 37
diff changeset
   588
    TBool isIncluded = EFalse;
hgs
parents: 37
diff changeset
   589
hgs
parents: 37
diff changeset
   590
    RPointerArray<HBufC> files;
hgs
parents: 37
diff changeset
   591
    CleanupResetAndDestroyPushL( files );
hgs
parents: 37
diff changeset
   592
    aPackage.FilesL( files );
hgs
parents: 37
diff changeset
   593
    TInt fileCount = files.Count();
hgs
parents: 37
diff changeset
   594
    FLOG_1( _L("CStartupListUpdater::IsFileIncludedInPackageL, pckg fileCount %d"), fileCount );
hgs
parents: 37
diff changeset
   595
    for( TInt index = 0; index < fileCount && !isIncluded; ++index )
hgs
parents: 37
diff changeset
   596
        {
hgs
parents: 37
diff changeset
   597
        TPtrC pckgFile( *files[ index ] );
hgs
parents: 37
diff changeset
   598
        FLOG_1( _L("CStartupListUpdater::IsFileIncludedInPackageL, pckgFile %S"), &pckgFile );
hgs
parents: 37
diff changeset
   599
        isIncluded = ( aFile.CompareF( pckgFile ) == 0 );
hgs
parents: 37
diff changeset
   600
        }
hgs
parents: 37
diff changeset
   601
    CleanupStack::PopAndDestroy( &files );
hgs
parents: 37
diff changeset
   602
hgs
parents: 37
diff changeset
   603
    if( isIncluded )
hgs
parents: 37
diff changeset
   604
        {
hgs
parents: 37
diff changeset
   605
        DevTrace( _L("File '%S' installed by package 0x%08x" ), &aFile, aPackage.UidL().iUid );
hgs
parents: 37
diff changeset
   606
        }
hgs
parents: 37
diff changeset
   607
    else
hgs
parents: 37
diff changeset
   608
        {
hgs
parents: 37
diff changeset
   609
        DevTrace( _L("File '%S' not installed by package 0x%08x" ), &aFile, aPackage.UidL().iUid );
hgs
parents: 37
diff changeset
   610
        }
hgs
parents: 37
diff changeset
   611
    FLOG_1( _L("CStartupListUpdater::IsFileIncludedInPackageL, ret %d"), isIncluded );
hgs
parents: 37
diff changeset
   612
    return isIncluded;
hgs
parents: 37
diff changeset
   613
    }
hgs
parents: 37
diff changeset
   614
hgs
parents: 37
diff changeset
   615
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   616
// CStartupListUpdater::IsFileIncludedInEmbeddedPackagesL()
hgs
parents: 37
diff changeset
   617
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   618
//
hgs
parents: 37
diff changeset
   619
TBool CStartupListUpdater::IsFileIncludedInEmbeddedPackagesL(
hgs
parents: 37
diff changeset
   620
        Swi::RSisRegistrySession& aSisRegSession, const TDesC& aFile,
hgs
parents: 37
diff changeset
   621
        Swi::RSisRegistryEntry& aPackage )
hgs
parents: 37
diff changeset
   622
    {
hgs
parents: 37
diff changeset
   623
    FLOG( _L("CStartupListUpdater::IsFileIncludedInEmbeddedPackagesL, begin") );
hgs
parents: 37
diff changeset
   624
    TBool isIncluded = EFalse;
hgs
parents: 37
diff changeset
   625
hgs
parents: 37
diff changeset
   626
    RPointerArray<Swi::CSisRegistryPackage> embeddedPackages;
hgs
parents: 37
diff changeset
   627
    CleanupResetAndDestroyPushL( embeddedPackages );
hgs
parents: 37
diff changeset
   628
    aPackage.EmbeddedPackagesL( embeddedPackages );
hgs
parents: 37
diff changeset
   629
hgs
parents: 37
diff changeset
   630
    TInt embeddedPackagesCount = embeddedPackages.Count();
hgs
parents: 37
diff changeset
   631
    FLOG_1( _L("CStartupListUpdater::IsFileIncludedInEmbeddedPackagesL, embeddedPackagesCount %d"),
hgs
parents: 37
diff changeset
   632
            embeddedPackagesCount );
hgs
parents: 37
diff changeset
   633
    for( TInt index = 0; index < embeddedPackagesCount && !isIncluded; ++index )
hgs
parents: 37
diff changeset
   634
        {
hgs
parents: 37
diff changeset
   635
        TUid uid = embeddedPackages[index]->Uid();
hgs
parents: 37
diff changeset
   636
        FLOG_1( _L("CStartupListUpdater::IsFileIncludedInEmbeddedPackagesL, uid 0x%08x"),
hgs
parents: 37
diff changeset
   637
                uid.iUid );
hgs
parents: 37
diff changeset
   638
hgs
parents: 37
diff changeset
   639
        Swi::RSisRegistryEntry package;
hgs
parents: 37
diff changeset
   640
        if( package.Open( aSisRegSession, uid ) == KErrNone )
hgs
parents: 37
diff changeset
   641
            {
hgs
parents: 37
diff changeset
   642
            CleanupClosePushL( package );
hgs
parents: 37
diff changeset
   643
            isIncluded = IsFileIncludedInPackageL( aFile, package );
hgs
parents: 37
diff changeset
   644
            if( !isIncluded )
hgs
parents: 37
diff changeset
   645
                {
hgs
parents: 37
diff changeset
   646
                // Check other embedded packages recursively if necessary
hgs
parents: 37
diff changeset
   647
                isIncluded = IsFileIncludedInEmbeddedPackagesL( aSisRegSession, aFile, package );
hgs
parents: 37
diff changeset
   648
                }
hgs
parents: 37
diff changeset
   649
            CleanupStack::PopAndDestroy( &package );
hgs
parents: 37
diff changeset
   650
            }
hgs
parents: 37
diff changeset
   651
        }
hgs
parents: 37
diff changeset
   652
    CleanupStack::PopAndDestroy( &embeddedPackages );
hgs
parents: 37
diff changeset
   653
hgs
parents: 37
diff changeset
   654
    FLOG_1( _L("CStartupListUpdater::IsFileIncludedInEmbeddedPackagesL, ret %d"), isIncluded );
hgs
parents: 37
diff changeset
   655
    return isIncluded;
hgs
parents: 37
diff changeset
   656
    }
hgs
parents: 37
diff changeset
   657
hgs
parents: 37
diff changeset
   658
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   659
// CStartupListUpdater::IsExeFileIncludedInPackageL()
hgs
parents: 37
diff changeset
   660
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   661
//
hgs
parents: 37
diff changeset
   662
TBool CStartupListUpdater::IsExeFileIncludedInPackageL(
hgs
parents: 37
diff changeset
   663
        Swi::RSisRegistrySession& aSisRegSession,
hgs
parents: 37
diff changeset
   664
        const TDesC& aExeFile, const TUid& aPackageUid )
hgs
parents: 37
diff changeset
   665
    {
hgs
parents: 37
diff changeset
   666
    FLOG_1( _L("CStartupListUpdater::IsExeFileIncludedInPackageL, begin, file %S"), &aExeFile );
hgs
parents: 37
diff changeset
   667
    TBool isIncluded = EFalse;
hgs
parents: 37
diff changeset
   668
hgs
parents: 37
diff changeset
   669
    Swi::RSisRegistryEntry package;
hgs
parents: 37
diff changeset
   670
    CleanupClosePushL( package );
hgs
parents: 37
diff changeset
   671
    TInt openError = package.Open( aSisRegSession, aPackageUid );
hgs
parents: 37
diff changeset
   672
    if( !openError )
hgs
parents: 37
diff changeset
   673
        {
hgs
parents: 37
diff changeset
   674
        isIncluded = IsFileIncludedInPackageL( aExeFile, package ) ||
hgs
parents: 37
diff changeset
   675
                IsFileIncludedInEmbeddedPackagesL( aSisRegSession, aExeFile, package );
hgs
parents: 37
diff changeset
   676
        if( !isIncluded )
hgs
parents: 37
diff changeset
   677
            {
hgs
parents: 37
diff changeset
   678
            DevTrace( _L("Error: exe not installed by this package or it's subpackages") );
hgs
parents: 37
diff changeset
   679
            }
hgs
parents: 37
diff changeset
   680
        }
hgs
parents: 37
diff changeset
   681
    CleanupStack::PopAndDestroy( &package );
hgs
parents: 37
diff changeset
   682
hgs
parents: 37
diff changeset
   683
    FLOG_1( _L("CStartupListUpdater::IsExeFileIncludedInPackageL, return %d"), isIncluded );
hgs
parents: 37
diff changeset
   684
    return isIncluded;
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   685
    }
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   686
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   687
// ---------------------------------------------------------------------------
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   688
// CStartupListUpdater::GetInstalledAppsL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   689
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   690
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   691
void CStartupListUpdater::GetInstalledAppsL(
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   692
        RPointerArray<HBufC>& aInstalledExecutableArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   693
    {
80
hgs
parents: 37
diff changeset
   694
    FLOG( _L("CStartupListUpdater::GetInstalledAppsL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   695
    Swi::RSisRegistrySession sisRegistrySession;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   696
    User::LeaveIfError( sisRegistrySession.Connect() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   697
    CleanupClosePushL( sisRegistrySession );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   698
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   699
    RPointerArray<Swi::CSisRegistryPackage> removablePackages;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   700
    CleanupResetAndDestroyPushL( removablePackages );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   701
    sisRegistrySession.RemovablePackagesL( removablePackages );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   702
80
hgs
parents: 37
diff changeset
   703
    TInt removablePackagesCount = removablePackages.Count();
hgs
parents: 37
diff changeset
   704
    FLOG_1( _L("CStartupListUpdater::GetInstalledAppsL, removablePackagesCount %d"),
hgs
parents: 37
diff changeset
   705
            removablePackagesCount );
hgs
parents: 37
diff changeset
   706
    for( TInt index = 0; index < removablePackagesCount; ++index )
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   707
        {
80
hgs
parents: 37
diff changeset
   708
        FLOG_1( _L("CStartupListUpdater::GetInstalledAppsL, index %d"), index );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   709
        Swi::RSisRegistryEntry entry;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   710
        CleanupClosePushL( entry );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   711
        entry.OpenL( sisRegistrySession, *( removablePackages[ index ] ) );
37
6e7b00453237 Revision: 201019
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 33
diff changeset
   712
        if( entry.RemovableL() )
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   713
            {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   714
            GetExecutablesFromEntryL( entry, aInstalledExecutableArray );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   715
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   716
        CleanupStack::PopAndDestroy( &entry );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   717
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   718
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   719
    CleanupStack::PopAndDestroy( 2, &sisRegistrySession );
80
hgs
parents: 37
diff changeset
   720
    FLOG( _L("CStartupListUpdater::GetInstalledAppsL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   721
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   722
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   723
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   724
// CStartupListUpdater::GetStartupListAppsL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   725
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   726
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   727
void CStartupListUpdater::GetStartupListAppsL( RDscStore& aDscStore,
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   728
        RPointerArray<HBufC>& aStartedExecutableArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   729
    {
80
hgs
parents: 37
diff changeset
   730
    FLOG( _L("CStartupListUpdater::GetStartupListAppsL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   731
    aDscStore.EnumOpenLC();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   732
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   733
    while( CDscItem* item = aDscStore.EnumReadNextL() )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   734
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   735
        CleanupStack::PushL( item );
80
hgs
parents: 37
diff changeset
   736
        TPtrC fileName( item->FileName() );
hgs
parents: 37
diff changeset
   737
        FLOG_1( _L("CStartupListUpdater::GetStartupListAppsL, fileName %S"), &fileName );
hgs
parents: 37
diff changeset
   738
        aStartedExecutableArray.AppendL( fileName.AllocL() );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   739
        CleanupStack::PopAndDestroy( item );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   740
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   741
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   742
    CleanupStack::PopAndDestroy();  // runs EnumClose
80
hgs
parents: 37
diff changeset
   743
    FLOG( _L("CStartupListUpdater::GetStartupListAppsL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   744
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   745
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   746
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   747
// CStartupListUpdater::StartedButNotInstalledAppsL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   748
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   749
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   750
void CStartupListUpdater::StartedButNotInstalledAppsL(
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   751
        RPointerArray<HBufC>& aStartedExecutableArray,                  // in
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   752
        RPointerArray<HBufC>& aInstalledExecutableArray,                // in
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   753
        RPointerArray<HBufC>& aStartedButNotInstalledExecutableArray )  // out
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   754
    {
80
hgs
parents: 37
diff changeset
   755
    FLOG( _L("CStartupListUpdater::StartedButNotInstalledAppsL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   756
    aStartedButNotInstalledExecutableArray.ResetAndDestroy();
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   757
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   758
    TIdentityRelation<HBufC> identityRelation( FileNamesEqual );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   759
    for( TInt index = 0; index < aStartedExecutableArray.Count(); ++index )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   760
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   761
        const HBufC* startedAppName = aStartedExecutableArray[ index ];
80
hgs
parents: 37
diff changeset
   762
        FLOG_1( _L("CStartupListUpdater::StartedButNotInstalledAppsL, startedAppName %S"),
hgs
parents: 37
diff changeset
   763
                startedAppName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   764
        if( aInstalledExecutableArray.Find( startedAppName, identityRelation ) == KErrNotFound )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   765
            {
80
hgs
parents: 37
diff changeset
   766
            FLOG( _L("CStartupListUpdater::StartedButNotInstalledAppsL, adding to array") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   767
            aStartedButNotInstalledExecutableArray.AppendL( startedAppName->AllocL() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   768
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   769
        }
80
hgs
parents: 37
diff changeset
   770
    FLOG( _L("CStartupListUpdater::StartedButNotInstalledAppsL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   771
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   772
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   773
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   774
// CStartupListUpdater::RemoveFromStartupListL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   775
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   776
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   777
void CStartupListUpdater::RemoveFromStartupListL( RDscStore& aDscStore,
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   778
        RPointerArray<HBufC>& aExecutableArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   779
    {
80
hgs
parents: 37
diff changeset
   780
    FLOG( _L("CStartupListUpdater::RemoveFromStartupListL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   781
    for( TInt index = 0; index < aExecutableArray.Count(); ++index )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   782
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   783
        const TDesC& executableName = *( aExecutableArray[ index ] );
80
hgs
parents: 37
diff changeset
   784
        FLOG_1( _L("CStartupListUpdater::RemoveFromStartupListL, executableName %S"),
hgs
parents: 37
diff changeset
   785
                &executableName );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   786
        CDscItem* item = CDscItem::NewLC( executableName, KNullDesC );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   787
        if( aDscStore.ItemExistsL( *item ) )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   788
            {
80
hgs
parents: 37
diff changeset
   789
            FLOG( _L("CStartupListUpdater::RemoveFromStartupListL, removing from DscStore") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   790
            aDscStore.DeleteItemL( *item );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   791
            }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   792
        CleanupStack::PopAndDestroy( item );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   793
        }
80
hgs
parents: 37
diff changeset
   794
    FLOG( _L("CStartupListUpdater::RemoveFromStartupListL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   795
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   796
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   797
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   798
// CStartupListUpdater::GetExecutablesFromEntryL()
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   799
// ---------------------------------------------------------------------------
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   800
//
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   801
void CStartupListUpdater::GetExecutablesFromEntryL( Swi::RSisRegistryEntry& aEntry,
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   802
        RPointerArray<HBufC>& aExecutableArray )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   803
    {
80
hgs
parents: 37
diff changeset
   804
    FLOG( _L("CStartupListUpdater::GetExecutablesFromEntryL, begin") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   805
    RPointerArray<HBufC> filesList;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   806
    CleanupResetAndDestroyPushL( filesList );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   807
    aEntry.FilesL( filesList );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   808
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   809
    for( TInt index = 0; index < filesList.Count(); ++index )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   810
        {
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   811
        TParse parse;
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   812
        TInt err = parse.SetNoWild( KNullDesC, filesList[ index ], NULL );
80
hgs
parents: 37
diff changeset
   813
        FLOG_3( _L("CStartupListUpdater::GetExecutablesFromEntryL, index %d, parse %S, err %d"),
hgs
parents: 37
diff changeset
   814
                index, &(parse.FullName()), err );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   815
        if( !err && ( parse.Ext().CompareF( KExecutableExtension ) == 0 ) )
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   816
            {
80
hgs
parents: 37
diff changeset
   817
            FLOG( _L("CStartupListUpdater::GetExecutablesFromEntryL, adding to array") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   818
            aExecutableArray.AppendL( parse.FullName().AllocL() );
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   819
            }
80
hgs
parents: 37
diff changeset
   820
        else
hgs
parents: 37
diff changeset
   821
            {
hgs
parents: 37
diff changeset
   822
            FLOG( _L("CStartupListUpdater::GetExecutablesFromEntryL, skipped") );
hgs
parents: 37
diff changeset
   823
            }
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   824
        }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   825
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   826
    CleanupStack::PopAndDestroy( &filesList );
80
hgs
parents: 37
diff changeset
   827
    FLOG( _L("CStartupListUpdater::GetExecutablesFromEntryL, end") );
33
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   828
    }
8110bf1194d1 Revision: 201017
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   829
80
hgs
parents: 37
diff changeset
   830
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   831
// CStartupListUpdater::OpenDevTraceL()
hgs
parents: 37
diff changeset
   832
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   833
//
hgs
parents: 37
diff changeset
   834
void CStartupListUpdater::OpenDevTraceL()
hgs
parents: 37
diff changeset
   835
    {
hgs
parents: 37
diff changeset
   836
    if( !iLogBuf )
hgs
parents: 37
diff changeset
   837
        {
hgs
parents: 37
diff changeset
   838
        TEntry entry;
hgs
parents: 37
diff changeset
   839
        if( iFs.Entry( KDevTraceDir, entry ) == KErrNone )
hgs
parents: 37
diff changeset
   840
            {
hgs
parents: 37
diff changeset
   841
            FLOG( _L("CStartupListUpdater::OpenDevTraceL, log dir exists") );
hgs
parents: 37
diff changeset
   842
            TFileName fileName;
hgs
parents: 37
diff changeset
   843
            fileName.Copy( KDevTraceDir );
hgs
parents: 37
diff changeset
   844
            fileName.Append( KDevTraceFile );
hgs
parents: 37
diff changeset
   845
            if( iLogFile.Replace( iFs, fileName, EFileWrite ) == KErrNone )
hgs
parents: 37
diff changeset
   846
                {
hgs
parents: 37
diff changeset
   847
                iLogBuf = HBufC::NewL( KDevTraceBuffer );
hgs
parents: 37
diff changeset
   848
                iFileBuf.CreateL( KDevTraceBuffer );
hgs
parents: 37
diff changeset
   849
                FLOG( _L("CStartupListUpdater::OpenDevTraceL, log file opened") );
hgs
parents: 37
diff changeset
   850
                }
hgs
parents: 37
diff changeset
   851
            }
hgs
parents: 37
diff changeset
   852
        }
hgs
parents: 37
diff changeset
   853
    }
hgs
parents: 37
diff changeset
   854
hgs
parents: 37
diff changeset
   855
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   856
// CStartupListUpdater::DevTrace()
hgs
parents: 37
diff changeset
   857
// ---------------------------------------------------------------------------
hgs
parents: 37
diff changeset
   858
//
hgs
parents: 37
diff changeset
   859
void CStartupListUpdater::DevTrace( TRefByValue<const TDesC> aFmt, ... )
hgs
parents: 37
diff changeset
   860
    {
hgs
parents: 37
diff changeset
   861
    if( iLogBuf )
hgs
parents: 37
diff changeset
   862
        {
hgs
parents: 37
diff changeset
   863
        VA_LIST list;
hgs
parents: 37
diff changeset
   864
        VA_START( list, aFmt );
hgs
parents: 37
diff changeset
   865
        TPtr line( iLogBuf->Des() );
hgs
parents: 37
diff changeset
   866
        line.FormatList( aFmt, list );
hgs
parents: 37
diff changeset
   867
        FLOG_1( _L("CStartupListUpdater::DevTrace: %S"), iLogBuf );
hgs
parents: 37
diff changeset
   868
hgs
parents: 37
diff changeset
   869
        const TChar KNewLine( '\n' );
hgs
parents: 37
diff changeset
   870
        line.Append( KNewLine );
hgs
parents: 37
diff changeset
   871
        iFileBuf.Copy( line );
hgs
parents: 37
diff changeset
   872
        iLogFile.Write( iFileBuf );  // return value ignored
hgs
parents: 37
diff changeset
   873
        }
hgs
parents: 37
diff changeset
   874
    }
hgs
parents: 37
diff changeset
   875