javamanager/javainstaller/javasifplugin/src/javasifplugin.cpp
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
parent 78 71ad690e91f5
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
2a9601315dfc Revision: v2.1.22
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".
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:  This file contains the implementation of CJavaSifPlugin
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*               class member functions. ECOM Plugin for USIF to handle
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*               install, uninstall, get component info requests.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
*/
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <apgcli.h>
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <apmstd.h>
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <charconv.h>
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <data_caging_path_literals.hrh>
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    25
#include <e32cmn.h>
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    26
#include <e32property.h>
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    27
#include <string.h>
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    28
#include <usif/usiferror.h>
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "comms.h"
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    31
#include "commsclientendpoint.h"
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
#include "commsmessage.h"
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    33
#include "javacommonutils.h"
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
#include "javaoslayer.h"
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
#include "javaprocessconstants.h"
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
#include "javasymbianoslayer.h"
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    37
#include "javauids.h"
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    38
#include "logger.h"
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    39
#include "resultsserver.h"
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
#include "runtimeexception.h"
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    42
#include "javasifplugin.h"
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    44
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    45
using namespace java::installer;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
using namespace java::util;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
using namespace java::comms;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
_LIT(KPrivateDataCage, "\\private\\");
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    50
_LIT(KInboxDataCage, "\\private\\1000484b\\");
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    51
_LIT(KJavaInstallerProcess, "Installer*");
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
    52
_LIT(KJavaInstallCopierProcess, "javainstallcopier.exe");
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
_LIT(KJavaInstallerDataCage, "\\private\\102033e6\\");
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    54
_LIT(KJavaInstallerTmp, "\\private\\102033E6\\installer\\tmp\\");
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    55
_LIT(KAnyExtension, ".*");
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    56
_LIT(KComponentInfo, " componentinfo");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    57
_LIT(KCommsResult, " -commsresult=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    58
_LIT(KJad, " -jad=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    59
_LIT(KJar, " -jar=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    60
_LIT(KDoubleQuote, "\"");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    61
_LIT(KInstall, " install");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    62
_LIT(KSilent, " -silent");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    63
_LIT(KUninstall, " uninstall");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    64
_LIT(KCid, " -cid=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    65
_LIT(KDrive, " -drive=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    66
_LIT(KYes, "yes");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    67
_LIT(KNo, "no");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    68
_LIT(KOcsp, " -ocsp=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    69
_LIT(KIgnoreOcspWarnings, " -ignore_ocsp_warnings=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    70
_LIT(KUpgrade, " -upgrade=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    71
_LIT(KUpgradeData, " -upgrade_data=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    72
_LIT(KUntrusted, " -untrusted=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    73
_LIT(KOverwrite, " -overwrite=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    74
_LIT(KDownload, " -download=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    75
_LIT(KIap, " -iap=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    76
_LIT(KSnap, " -snap=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    77
_LIT(KForceCancel, " -forcecancel");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    78
_LIT(KBase64, " -base64=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    79
_LIT(KUsername, " -username=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    80
_LIT(KPassword, " -password=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    81
_LIT(KSourceUrl, " -sourceurl=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    82
_LIT(KCharSet, " -charset=");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    83
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    84
_LIT(KJadMimeType, "text/vnd.sun.j2me.app-descriptor");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    85
_LIT8(K8JadMimeType, "text/vnd.sun.j2me.app-descriptor");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    86
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    87
// Long Java Installer command lines contain max 2 path names (512 chars max) and
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    88
// some options -> 1536 is long enough buffer
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    89
const TInt KLongCmdLineLen = 1536;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    90
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    91
// When starting Java Installer for uninstallation the command line is much shorter
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
    92
const TInt KShortCmdLineLen = 256;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    93
35
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
    94
// Java Installer is executed with same Uid as Java Runtime
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
    95
_LIT_SECURE_ID(KJavaInstallerSecureID, KJavaMidpSecureId);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
    96
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    97
// ============================ MEMBER FUNCTIONS ===============================
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    98
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
CJavaSifPlugin* CJavaSifPlugin::NewL()
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
    CJavaSifPlugin* self = new(ELeave) CJavaSifPlugin();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
    CleanupStack::PushL(self);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
    self->ConstructL();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
    CleanupStack::Pop(self);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
    return self;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
CJavaSifPlugin::~CJavaSifPlugin()
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
{
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   110
    mRFs.Close();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   111
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   112
    TInt nHandles = mHandlesToClose.Count();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
    while (nHandles > 0)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
        nHandles--;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   116
        mHandlesToClose[nHandles].Close();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
    }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   118
    mHandlesToClose.Reset();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   120
    delete mResultsServer;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   121
    mResultsServer = NULL;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   123
    delete mDummyResults;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   124
    mDummyResults = NULL;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   125
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   126
    delete mDummyInfo;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   127
    mDummyInfo = NULL;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
CJavaSifPlugin::CJavaSifPlugin()
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
void CJavaSifPlugin::ConstructL()
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
{
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   136
    User::LeaveIfError(mRFs.Connect());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   137
    User::LeaveIfError(mRFs.ShareProtected());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   138
    mResultsServer = NULL;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   139
    mDummyResults = COpaqueNamedParams::NewL(); // codescanner::forgottoputptroncleanupstack
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   140
    mDummyInfo = CComponentInfo::NewL();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   141
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   143
void CJavaSifPlugin::GetComponentInfo(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
    const TDesC& aFileName,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
    const TSecurityContext& aSecurityContext,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
    CComponentInfo& aComponentInfo,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
    RFile fileHandle;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   150
    TInt err = fileHandle.Open(mRFs, aFileName, EFileShareReadersOnly | EFileRead);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
    if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
        ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
              "CJavaSifPlugin::GetComponentInfo Opening file for reading failed with error %d",
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
              err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   157
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   158
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   159
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   160
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
    GetComponentInfo(fileHandle, aSecurityContext, aComponentInfo, aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
    fileHandle.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
void CJavaSifPlugin::GetComponentInfo(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
    RFile& aFileHandle,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
    const TSecurityContext& /* aSecurityContext */,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
    CComponentInfo& aComponentInfo,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
{
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   171
    if (ExitIfJavaInstallerRunning(*mDummyResults, aStatus))
35
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   172
    {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   173
        return;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   174
    }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   175
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
    RProcess rJavaInstaller;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   177
    TFileName fileName;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   178
    HBufC* pBufCommandLine = NULL;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   179
    TRAPD(err, pBufCommandLine = HBufC::NewL(KLongCmdLineLen))
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   180
    if (KErrNone != err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   181
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   182
        TRequestStatus *statusPtr(&aStatus);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   183
        User::RequestComplete(statusPtr, err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   184
        return;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   185
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   186
    std::auto_ptr<HBufC> bufCommandLine(pBufCommandLine);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   187
    TPtr commandLine = pBufCommandLine->Des();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
    // Build command line used to pass all necessary info to Java Installer
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
    std::auto_ptr<HBufC> installerStarterDll(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
        stringToDes(java::runtime::JAVA_INSTALLER_STARTER_DLL));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
    commandLine = installerStarterDll->Des();
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   193
    commandLine.Append(KComponentInfo);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
    // Ask Java Installer to send component info back
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
    // as Comms message. 11000 is IPC_ADDRESS_JAVA_SIF_PLUGIN_C Comms endpoint
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
    // that our ResultsServer will listen to.
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   198
    commandLine.Append(KCommsResult);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   199
    commandLine.AppendNum(IPC_ADDRESS_JAVA_SIF_PLUGIN_C);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   201
    err = aFileHandle.FullName(fileName);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   202
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   203
    // Java Installer does not have AllFiles capability.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   204
    // So if the .jad/.jar file is in the private data cage of
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   205
    // Remove Application Management system, it must be copied
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   206
    // to the private data cage of Java Installer in this
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   207
    // plugin which is executed in process which hopefully has
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   208
    // AllFiles capability.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   209
    TRAP(err, CopyFilesIfNeededL(fileName));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   210
    if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   211
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   212
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   213
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   214
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   215
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   216
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   217
    // Check whether the file is .jad or .jar
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   218
    TBool isJad;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   219
    err = IsJadFile(aFileHandle, isJad);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   220
    if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   221
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   222
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   223
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   224
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   225
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   226
    if (isJad)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   227
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   228
        // Installation should be started from JAD file
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   229
        commandLine.Append(KJad);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   230
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   231
    else
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   232
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   233
        // from JAR file
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   234
        commandLine.Append(KJar);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   235
    }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   236
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   237
    // Filename parameter must be surrounded in double quotes to
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   238
    // ensure that spaces in filename are passed correctly.
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   239
    commandLine.Append(KDoubleQuote);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   240
    commandLine.Append(fileName);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   241
    commandLine.Append(KDoubleQuote);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   242
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   243
    // Start JavaInstaller
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   244
    std::auto_ptr<HBufC> installerProcess(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   245
        stringToDes(java::runtime::JAVA_PROCESS));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   246
    err = rJavaInstaller.Create(installerProcess->Des(), commandLine);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   247
    if (KErrNone == err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   248
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   249
        err = StartResultsServer(*mDummyResults, aComponentInfo);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
        if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
        {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
            // server cannot be started
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   253
            rJavaInstaller.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   254
            ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   255
                  "CJavaSifPlugin::GetComponentInfo: Cannot start results server, err %d", err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
            TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
            User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
            return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
        // The status of the component info operation == the exit status of Java Installer
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
        // It will be passed to the asynch caller through aStatus
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
        rJavaInstaller.Logon(aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
    else
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
        rJavaInstaller.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
        ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   269
              "CJavaSifPlugin::GetComponentInfo: starting JavaInstaller failed, err=%d", err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   271
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   272
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   275
    rJavaInstaller.Resume();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   276
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   277
    // Do NOT close rJavaInstaller now -> the caller gets notification when the
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   278
    // process actually closes.
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   279
    err = mHandlesToClose.Append(rJavaInstaller);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   280
    if ( err )
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   281
    {
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   282
        rJavaInstaller.Close();
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   283
        ELOG1(EJavaInstaller, "CJavaSifPlugin::GetComponentInfo  mHandles"
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   284
              "ToClose.Append failed with error %d", err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   285
        TRequestStatus *statusPtr(&aStatus);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   286
        User::RequestComplete(statusPtr, err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   287
        return;
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   288
    }
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
void CJavaSifPlugin::Install(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
    const TDesC& aFileName,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
    const TSecurityContext& aSecurityContext,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
    const COpaqueNamedParams& aArguments,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   295
    COpaqueNamedParams& aResults,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   296
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   297
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   298
    RFile fileHandle;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   299
    TInt err = fileHandle.Open(mRFs, aFileName, EFileShareReadersOnly | EFileRead);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   300
    if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   301
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   302
        ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   303
              "CJavaSifPlugin::Install Opening file for reading failed with error %d", err);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   304
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   305
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   306
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   307
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   308
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   309
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   310
    Install(fileHandle, aSecurityContext, aArguments, aResults, aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   311
    fileHandle.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   312
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   313
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   314
void CJavaSifPlugin::Install(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   315
    RFile& aFileHandle,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   316
    const TSecurityContext& aSecurityContext,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   317
    const COpaqueNamedParams& aArguments,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   318
    COpaqueNamedParams& aResults,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   319
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   320
{
35
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   321
    if (ExitIfJavaInstallerRunning(aResults, aStatus))
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   322
    {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   323
        return;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   324
    }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   325
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   326
    // Create buffer for Java Installer command line
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   327
    HBufC* pBufCommandLine = NULL;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   328
    TRAPD(err, pBufCommandLine = HBufC::NewL(KLongCmdLineLen))
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   329
    if (KErrNone != err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   330
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   331
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, ELowMemory));
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   332
        TRequestStatus *statusPtr(&aStatus);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   333
        User::RequestComplete(statusPtr, err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   334
        return;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   335
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   336
    std::auto_ptr<HBufC> bufCommandLine(pBufCommandLine);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   337
    TPtr commandLine = pBufCommandLine->Des();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   338
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   339
    // Build command line used to pass all necessary info to Java Installer
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   340
    std::auto_ptr<HBufC> installerStarterDll(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   341
        stringToDes(java::runtime::JAVA_INSTALLER_STARTER_DLL));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   342
    commandLine = installerStarterDll->Des();
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   343
    commandLine.Append(KInstall);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   344
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   345
    // Check whether this is silent installation
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   346
    TInt silentInstall = 0;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   347
    TRAP_IGNORE(aArguments.GetIntByNameL(KSifInParam_InstallSilently, silentInstall));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   348
    if (silentInstall)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   349
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   350
        // Silent installation requires TrustedUI capability
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   351
        if (!aSecurityContext.HasCapability(ECapabilityTrustedUI))
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   352
        {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   353
            ELOG(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   354
                 "CJavaSifPlugin::Install The caller did not have TrustedUI capability");
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   355
            TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, ESecurityError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   356
            TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   357
            User::RequestComplete(statusPtr, KErrPermissionDenied);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   358
            return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   359
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   360
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   361
        commandLine.Append(KSilent);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   362
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   363
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   364
    BuildInstallCommandLine(commandLine, aArguments);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   365
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   366
    // Ask Java Installer to send installation results back
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   367
    // as Comms message. 11000 is IPC_ADDRESS_JAVA_SIF_PLUGIN_C Comms endpoint
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   368
    // that our ResultsServer will listen to.
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   369
    commandLine.Append(KCommsResult);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   370
    commandLine.AppendNum(IPC_ADDRESS_JAVA_SIF_PLUGIN_C);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   371
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   372
    TFileName fileName;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   373
    err = aFileHandle.FullName(fileName);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   374
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   375
    // Java Installer does not have AllFiles capability.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   376
    // So if the .jad/.jar file is in the private data cage of
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   377
    // Remove Application Management system, it must be copied
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   378
    // to the private data cage of Java Installer in this
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   379
    // plugin which is executed in process which hopefully has
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   380
    // AllFiles capability.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   381
    TRAP(err, CopyFilesIfNeededL(fileName));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   382
    if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   383
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   384
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   385
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   386
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   387
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   388
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   389
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   390
    // Check whether the file is .jad or .jar
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   391
    TBool isJad = EFalse;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   392
    err = IsJadFile(aFileHandle, aArguments, isJad);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   393
    if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   394
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   395
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   396
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   397
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   398
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   399
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   400
    if (isJad)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   401
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   402
        // Installation should be started from JAD file
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   403
        commandLine.Append(KJad);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   404
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   405
    else
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   406
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   407
        // from JAR file
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   408
        commandLine.Append(KJar);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   409
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   410
    // Filename parameter must be surrounded in double quotes to
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   411
    // ensure that spaces in filename are passed correctly.
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   412
    commandLine.Append(KDoubleQuote);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   413
    commandLine.Append(fileName);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   414
    commandLine.Append(KDoubleQuote);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   415
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   416
    // Start JavaInstaller
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   417
    std::auto_ptr<HBufC> installerProcess(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   418
        stringToDes(java::runtime::JAVA_PROCESS));
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   419
    RProcess rJavaInstaller;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   420
    err = rJavaInstaller.Create(installerProcess->Des(), commandLine);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   421
    if (KErrNone == err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   422
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   423
        err = StartResultsServer(aResults, *mDummyInfo);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   424
        if (KErrNone != err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   425
        {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   426
            // server cannot be started
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   427
            rJavaInstaller.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   428
            ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   429
                  "CJavaSifPlugin::Install: Cannot start results server, err %d", err);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   430
            TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   431
            TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   432
            User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   433
            return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   434
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   435
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   436
        // The status of the install operation == the exit status of Java Installer
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   437
        // It will be passed to the asynch caller through aStatus
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   438
        rJavaInstaller.Logon(aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   439
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   440
    else
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   441
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   442
        rJavaInstaller.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   443
        ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   444
              "CJavaSifPlugin::Install: starting JavaInstaller failed, err=%d", err);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   445
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   446
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   447
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   448
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   449
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   450
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   451
    rJavaInstaller.Resume();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   452
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   453
    // Do NOT close rJavaInstaller now -> the caller gets notification when the
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   454
    // process actually closes.
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   455
    err = mHandlesToClose.Append(rJavaInstaller);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   456
    if ( err )
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   457
    {
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   458
        rJavaInstaller.Close();
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   459
        ELOG1(EJavaInstaller, "CJavaSifPlugin::Install  mHandles"
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   460
              "ToClose.Append failed with error %d", err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   461
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, ELowMemory));
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   462
        TRequestStatus *statusPtr(&aStatus);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   463
        User::RequestComplete(statusPtr, err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   464
        return;
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   465
    }
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   466
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   467
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   468
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   469
void CJavaSifPlugin::Uninstall(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   470
    TComponentId aComponentId,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   471
    const TSecurityContext& aSecurityContext,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   472
    const COpaqueNamedParams& aArguments,
35
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   473
    COpaqueNamedParams& aResults,
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   474
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   475
{
35
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   476
    if (ExitIfJavaInstallerRunning(aResults, aStatus))
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   477
    {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   478
        return;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   479
    }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
   480
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   481
    // Allocate buffer for Java Installer command line
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   482
    HBufC* pBufCommandLine = NULL;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   483
    TRAPD(err, pBufCommandLine = HBufC::NewL(KShortCmdLineLen))
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   484
    if (KErrNone != err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   485
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   486
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, ELowMemory));
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   487
        TRequestStatus *statusPtr(&aStatus);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   488
        User::RequestComplete(statusPtr, err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   489
        return;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   490
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   491
    std::auto_ptr<HBufC> bufCommandLine(pBufCommandLine);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   492
    TPtr commandLine = pBufCommandLine->Des();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   493
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   494
    // Build command line used to pass all necessary info to Java Installer
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   495
    std::auto_ptr<HBufC> installerStarterDll(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   496
        stringToDes(java::runtime::JAVA_INSTALLER_STARTER_DLL));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   497
    commandLine = installerStarterDll->Des();
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   498
    commandLine.Append(KUninstall);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   499
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   500
    commandLine.Append(KCid);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   501
    commandLine.AppendNum(aComponentId);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   502
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   503
    // Check whether this is silent uninstallation
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   504
    TInt silentInstall = 0;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   505
    TRAP_IGNORE(aArguments.GetIntByNameL(KSifInParam_InstallSilently, silentInstall));
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   506
    if (silentInstall)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   507
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   508
        // Silent uninstallation requires TrustedUI capability
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   509
        if (!aSecurityContext.HasCapability(ECapabilityTrustedUI))
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   510
        {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   511
            ELOG(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   512
                 "CJavaSifPlugin::Uninstall The caller did not have TrustedUI capability");
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   513
            TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, ESecurityError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   514
            TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   515
            User::RequestComplete(statusPtr, KErrPermissionDenied);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   516
            return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   517
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   518
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   519
        commandLine.Append(KSilent);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   520
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   521
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   522
    // start JavaInstaller
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   523
    std::auto_ptr<HBufC> installerProcess(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   524
        stringToDes(java::runtime::JAVA_PROCESS));
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   525
    RProcess rJavaInstaller;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   526
    err = rJavaInstaller.Create(installerProcess->Des(), commandLine);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   527
    if (KErrNone == err)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   528
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   529
        err = StartResultsServer(aResults, *mDummyInfo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   530
        if (KErrNone != err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   531
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   532
            // server cannot be started
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   533
            rJavaInstaller.Close();
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   534
            ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   535
                  "CJavaSifPlugin::Uninstall: Cannot start results server, err %d", err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   536
            TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   537
            TRequestStatus *statusPtr(&aStatus);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   538
            User::RequestComplete(statusPtr, err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   539
            return;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   540
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   541
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   542
        // the exit status of Java Installer will be passed to
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   543
        // the asynch caller through aStatus
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   544
        rJavaInstaller.Logon(aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   545
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   546
        rJavaInstaller.Resume();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   547
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   548
    else
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   549
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   550
        rJavaInstaller.Close();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   551
        ELOG1(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   552
             "CJavaSifPlugin::Uninstall: starting JavaInstaller failed, err=%d", err);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   553
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, EUnexpectedError));
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   554
        TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   555
        User::RequestComplete(statusPtr, err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   556
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   557
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   558
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   559
    // Do NOT close rJavaInstaller now -> the caller gets notification when the
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   560
    // process actually closes.
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   561
    err = mHandlesToClose.Append(rJavaInstaller);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   562
    if ( err )
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   563
    {
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   564
        rJavaInstaller.Close();
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   565
        ELOG1(EJavaInstaller, "CJavaSifPlugin::Uninstall  mHandles"
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   566
              "ToClose.Append failed with error %d", err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   567
        TRAP_IGNORE(aResults.AddIntL(KSifOutParam_ErrCategory, ELowMemory));
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   568
        TRequestStatus *statusPtr(&aStatus);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   569
        User::RequestComplete(statusPtr, err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   570
        return;
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   571
    }
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   572
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   573
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   574
void CJavaSifPlugin::Activate(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   575
    TComponentId /* aComponentId */,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   576
    const TSecurityContext& /* aSecurityContext */,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   577
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   578
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   579
    // java applications are always active
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   580
    TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   581
    User::RequestComplete(statusPtr, KErrNone);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   582
    return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   583
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   584
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   585
void CJavaSifPlugin::Deactivate(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   586
    TComponentId /* aComponentId */,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   587
    const TSecurityContext& /* aSecurityContext */,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   588
    TRequestStatus& aStatus)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   589
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   590
    // java applications are always active
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   591
    TRequestStatus *statusPtr(&aStatus);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   592
    User::RequestComplete(statusPtr, KErrNotSupported);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   593
    return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   594
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   595
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   596
void CJavaSifPlugin::CancelOperation()
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   597
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   598
    // Send cancel message to Java Installer
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   599
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   600
    // Check whether there is anything to cancel
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   601
    if (mHandlesToClose.Count() < 1)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   602
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   603
        // No Java Installer process running, do nothing
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   604
        WLOG(EJavaInstaller,
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   605
            "CJavaSifPlugin::CancelOperation: Cancel called but there is no operation to cancel");
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   606
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   607
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   608
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   609
    CommsMessage message;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   610
    message.setReceiver(IPC_ADDRESS_JAVA_INSTALLER_SERVER_C);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   611
    message.setSender(IPC_ADDRESS_JAVA_SIF_PLUGIN_C);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   612
    message.setMessageId(INSTALLER_CANCEL_MESSAGE_ID);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   613
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   614
    CommsMessage replyMessage;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   615
    int timeout = 10; // 10 seconds  // codescanner::magicnumbers
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   616
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   617
    CommsClientEndpoint comms;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   618
    int err = comms.connect(IPC_ADDRESS_JAVA_INSTALLER_SERVER_C);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   619
    if (KErrNone == err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   620
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   621
        err = comms.sendReceive(message, replyMessage, timeout);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   622
    }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   623
    else
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   624
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   625
        // Cannot connect to Java Installer Comms end point,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   626
        // for example Java Installer is still starting up or
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   627
        // already exiting
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   628
        WLOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   629
            "CJavaSifPlugin:CancelOperation: Cannot connect to Java Installer "
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   630
            "Comms end point, err %d", err);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   631
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   632
    }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   633
    if (err != 0)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   634
    {
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   635
        // Sending message to Java Installer failed.
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   636
        ELOG1(EJavaInstaller,
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   637
            "CJavaSifPlugin:CancelOperation: Cannot send message to Java Installer, err %d",
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   638
            err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   639
        // Ignore possible errors in disconnect
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   640
        (void)comms.disconnect();  // codescanner::voidparameter
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   641
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   642
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   643
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   644
    // Ignore the cancel result returned in replyMessage
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   645
    // because current SIF API does not return cancel result
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   646
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   647
    // Ignore possible errors in disconnect
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   648
    (void)comms.disconnect();  // codescanner::voidparameter
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   649
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   650
    // It takes some time before Java Installer had really cancelled
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   651
    // the operation and exited. Wait for it to happen because this function
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   652
    // must return only after the original asynchronous call is completed.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   653
    TRequestStatus status;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   654
    // This array contains process handles for all Java Installer processes
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   655
    // started from this sif plugin. The last handle is the active one.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   656
    // Check if it is still running
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   657
    if (mHandlesToClose[mHandlesToClose.Count()-1].ExitReason() != 0)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   658
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   659
        // Process has already closed
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   660
        return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   661
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   662
    // Wait until it exits
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   663
    mHandlesToClose[mHandlesToClose.Count()-1].Logon(status);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   664
    User::WaitForRequest(status);  // codescanner::userWaitForRequest
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   665
    // Ignore the exit status of Java Installer because current SIF API
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   666
    // does not return cancel result
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   667
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   668
    return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   669
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   670
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   671
void CJavaSifPlugin::CopyFilesIfNeededL(TFileName &aFileName)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   672
{
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   673
    // Check if the file is in the private data cage of some process
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   674
    TInt idx = aFileName.FindF(KPrivateDataCage);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   675
    if ((idx != KErrNotFound) && (idx < 3))   // codescanner::magicnumbers
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   676
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   677
        // In case of device Inbox or Java Installer itself do nothing
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   678
        if ((aFileName.FindF(KInboxDataCage) != KErrNotFound) ||
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   679
                (aFileName.FindF(KJavaInstallerDataCage) != KErrNotFound))
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   680
        {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   681
            return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   682
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   683
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   684
        // Copy ALL files with the same base filename as aFileName
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   685
        // to Java Installer tmp dir so that both .jad file and
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   686
        // the corresponding .jar file are copied.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   687
        // (aFileName is <path>\<name>.<ext>, copy <path>\<name>.*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   688
        // to Java Installer tmp dir.)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   689
        TParse fp;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   690
        mRFs.Parse(aFileName, fp);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   691
        TFileName filesToCopy = fp.DriveAndPath();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   692
        filesToCopy.Append(fp.Name());
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   693
        filesToCopy.Append(KAnyExtension);
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   694
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   695
        // Use JavaInstallCopier.exe to copy the files.
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   696
        RProcess rJavaInstallCopier;
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   697
        TInt err = rJavaInstallCopier.Create(
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   698
            KJavaInstallCopierProcess, filesToCopy);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   699
        if (KErrNone == err)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   700
        {
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   701
            TRequestStatus status;
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   702
            rJavaInstallCopier.Logon(status);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   703
            rJavaInstallCopier.Resume();
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   704
            User::WaitForRequest(status); // codescanner::userWaitForRequest
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   705
            err = rJavaInstallCopier.ExitReason();
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   706
            rJavaInstallCopier.Close();
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   707
            if (KErrNone != err)
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   708
            {
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   709
                ELOG1(EJavaInstaller,
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   710
                      "CJavaSifPlugin::CopyFilesIfNeededL: copying files "
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   711
                      "to JavaInstaller data cage failed, err=%d", err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   712
                User::Leave(err);
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   713
            }
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   714
        }
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   715
        else
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   716
        {
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   717
            rJavaInstallCopier.Close();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   718
            ELOG1(EJavaInstaller,
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   719
                  "CJavaSifPlugin::CopyFilesIfNeededL: starting "
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   720
                  "JavaInstallCopier failed, err=%d", err);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   721
            User::Leave(err);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   722
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   723
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   724
        // aFileName must point to the copy of the file
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   725
        aFileName = fp.Drive();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   726
        aFileName.Append(KJavaInstallerTmp);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   727
        aFileName.Append(fp.NameAndExt());
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   728
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   729
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   730
    return;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   731
}
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   732
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   733
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   734
TInt CJavaSifPlugin::IsJadFile(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   735
    RFile& aFileHandle,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   736
    const COpaqueNamedParams& aArguments,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   737
    TBool& aIsJad)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   738
{
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   739
    TBool mimeTypeGiven = EFalse;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   740
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   741
    TRAP_IGNORE(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   742
        const TDesC &desValue = aArguments.StringByNameL(KSifInParam_MimeType);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   743
        if (desValue.Length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   744
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   745
            mimeTypeGiven = ETrue;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   746
            if (!desValue.Compare(KJadMimeType))
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   747
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   748
                aIsJad = ETrue;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   749
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   750
            else
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   751
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   752
                aIsJad = EFalse;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   753
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   754
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   755
    )
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   756
    if (mimeTypeGiven)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   757
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   758
        return KErrNone;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   759
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   760
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   761
    // Mime type was not given in the input arguments, must check the contents
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   762
    // of the file itself
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   763
    return IsJadFile(aFileHandle, aIsJad);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   764
}
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   765
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   766
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   767
TInt CJavaSifPlugin::IsJadFile(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   768
    RFile& aFileHandle,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   769
    TBool& aIsJad)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   770
{
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   771
    RApaLsSession apaSession;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   772
    TInt err = apaSession.Connect();
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   773
    if (KErrNone != err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   774
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   775
        ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   776
            "CJavaSifPlugin::IsJadFile RApaLsSession Connect error %d", err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   777
        return err;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   778
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   779
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   780
    TDataType jadFileMimeType(K8JadMimeType);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   781
    err = apaSession.RecognizeSpecificData(aFileHandle, jadFileMimeType, aIsJad);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   782
    apaSession.Close();
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   783
    if (KErrNone != err)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   784
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   785
        // Just log the error
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   786
        ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   787
            "CJavaSifPlugin::IsJadFile RApaLsSession RecognizeSpecificData error %d",
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   788
            err);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   789
        return err;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   790
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   791
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   792
    return KErrNone;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   793
}
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   794
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   795
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   796
void CJavaSifPlugin::BuildInstallCommandLine(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   797
    TPtr& aCommandLine,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   798
    const COpaqueNamedParams& aArguments)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   799
{
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   800
    // KSifInParam_Drive -> -drive=install_target_drive (A, B, C, ..., Z)
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   801
    TInt intValue;
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   802
    RArray<TInt> intArray;
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   803
    TRAPD(err, intArray = aArguments.IntArrayByNameL(KSifInParam_Drive));
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   804
    if (err == KErrNone && intArray.Count() > 0)
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   805
    {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   806
        // Java installer supports one installation drive only, so take
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   807
        // the first parameter which is the most preferred drive.
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   808
        intValue = intArray[0];
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   809
        // Value 0 is 'A:' drive and  value 25 is 'Z:' drive
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   810
        if ((intValue > -1) && (intValue < 26))  // codescanner::magicnumbers
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   811
        {
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   812
            aCommandLine.Append(KDrive);
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   813
            TChar drive('A');
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   814
            drive += intValue;
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   815
            aCommandLine.Append(drive);
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   816
        }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   817
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   818
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   819
    // KSifInParam_PerformOCSP Yes/No/AskUser -> -ocsp=yes|no
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   820
    intValue = GetPositiveIntParam(KSifInParam_PerformOCSP, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   821
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   822
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   823
        aCommandLine.Append(KOcsp);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   824
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   825
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   826
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   827
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   828
        aCommandLine.Append(KOcsp);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   829
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   830
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   831
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   832
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   833
    // KSifInParam_IgnoreOCSPWarnings Yes/No/AskUser -> -ignore_ocsp_warnings=yes|no
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   834
    intValue = GetPositiveIntParam(KSifInParam_IgnoreOCSPWarnings, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   835
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   836
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   837
        aCommandLine.Append(KIgnoreOcspWarnings);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   838
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   839
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   840
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   841
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   842
        aCommandLine.Append(KIgnoreOcspWarnings);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   843
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   844
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   845
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   846
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   847
    // KSifInParam_AllowUpgrade Yes/No/AskUser -> -upgrade=yes|no
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   848
    intValue = GetPositiveIntParam(KSifInParam_AllowUpgrade, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   849
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   850
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   851
        aCommandLine.Append(KUpgrade);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   852
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   853
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   854
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   855
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   856
        aCommandLine.Append(KUpgrade);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   857
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   858
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   859
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   860
50
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   861
    // KSifInParam_AllowUpgradeData Yes/No/AskUser -> -upgrade_data=yes|no
023eef975703 v2.2.4_1
hgs
parents: 49
diff changeset
   862
    intValue = GetPositiveIntParam(KSifInParam_AllowUpgradeData, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   863
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   864
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   865
        aCommandLine.Append(KUpgradeData);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   866
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   867
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   868
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   869
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   870
        aCommandLine.Append(KUpgradeData);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   871
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   872
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   873
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   874
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   875
    // KSifInParam_AllowUntrusted Yes/No/AskUser -> -untrusted=yes|no
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   876
    intValue = GetPositiveIntParam(KSifInParam_AllowUntrusted, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   877
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   878
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   879
        aCommandLine.Append(KUntrusted);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   880
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   881
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   882
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   883
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   884
        aCommandLine.Append(KUntrusted);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   885
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   886
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   887
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   888
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   889
    // KSifInParam_AllowOverwrite Yes/No/AskUser -> -overwrite=yes|no
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   890
    intValue = GetPositiveIntParam(KSifInParam_AllowOverwrite, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   891
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   892
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   893
        aCommandLine.Append(KOverwrite);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   894
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   895
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   896
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   897
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   898
        aCommandLine.Append(KOverwrite);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   899
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   900
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   901
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   902
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   903
    // KSifInParam_AllowDownload Yes/No/AskUser -> -download=yes|no
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   904
    intValue = GetPositiveIntParam(KSifInParam_AllowDownload, aArguments);
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   905
    if (intValue == Usif::EAllowed) // Yes
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   906
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   907
        aCommandLine.Append(KDownload);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   908
        aCommandLine.Append(KYes);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   909
    }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 78
diff changeset
   910
    else if (intValue == Usif::ENotAllowed) // No
49
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   911
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   912
        aCommandLine.Append(KDownload);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   913
        aCommandLine.Append(KNo);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   914
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   915
    // AskUser is not supported
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   916
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   917
    // KSifInParam_IAP -> -iap=IAP_ID (internet access point id)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   918
    intValue = GetPositiveIntParam(KSifInParam_IAP, aArguments);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   919
    if (intValue > -1)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   920
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   921
        // IAP ids are always positive
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   922
        aCommandLine.Append(KIap);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   923
        aCommandLine.AppendNum(intValue);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   924
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   925
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   926
    // KSifInParam_SNAP -> -snap=SNAP_ID (service network access point id)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   927
    intValue = GetPositiveIntParam(KSifInParam_SNAP, aArguments);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   928
    if (intValue > -1)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   929
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   930
        // SNAP ids are always positive
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   931
        aCommandLine.Append(KSnap);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   932
        aCommandLine.AppendNum(intValue);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   933
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   934
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   935
    // When this param is given, Java Installer will cancel installation
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   936
    // before committing anything. This option is for debugging purposes only.
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   937
    // KForceCancel -> -forcecancel
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   938
    // The value of parameter is ignored
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   939
    TRAP_IGNORE(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   940
        const TDesC &desValue = aArguments.StringByNameL(KForceCancel);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   941
        if (desValue.Length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   942
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   943
            aCommandLine.Append(KForceCancel);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   944
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   945
    )
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   946
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   947
    std::wstring base64EncodedArgs;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   948
    // KSifInParam_UserName -> -username=download_username
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   949
    TRAP_IGNORE(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   950
        const TDesC &desValue = aArguments.StringByNameL(KSifInParam_UserName);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   951
        if (desValue.Length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   952
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   953
            try
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   954
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   955
                std::wstring value((wchar_t *)(desValue.Ptr()), desValue.Length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   956
                std::wstring encodedValue = JavaCommonUtils::wbase64encode(value);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   957
                aCommandLine.Append(KUsername);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   958
                aCommandLine.Append(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   959
                    (const unsigned short *)encodedValue.c_str(), (int)encodedValue.length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   960
                base64EncodedArgs.append(L"username,");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   961
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   962
            catch (std::exception& e)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   963
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   964
                ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   965
                    "CJavaSifPlugin::BuildInstallCommandLine Base64 encoding user "
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   966
                    "name failed, err %s", e.what());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   967
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   968
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   969
    )
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   970
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   971
    // KSifInParam_Password -> -password=download_password
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   972
    TRAP_IGNORE(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   973
        const TDesC &desValue = aArguments.StringByNameL(KSifInParam_Password);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   974
        if (desValue.Length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   975
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   976
            try
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   977
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   978
                std::wstring value((wchar_t *)(desValue.Ptr()), desValue.Length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   979
                std::wstring encodedValue = JavaCommonUtils::wbase64encode(value);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   980
                aCommandLine.Append(KPassword);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   981
                aCommandLine.Append(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   982
                    (const unsigned short *)encodedValue.c_str(), (int)encodedValue.length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   983
                base64EncodedArgs.append(L"password,");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   984
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   985
            catch (std::exception& e)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   986
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   987
                ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   988
                    "CJavaSifPlugin::BuildInstallCommandLine Base64 encoding password "
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   989
                    "failed, err %s", e.what());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   990
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   991
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   992
    )
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   993
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   994
    // KSifInParam_SourceUrl -> -sourceurl=original (HTTP) URL of the JAD or JAR file
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   995
    TRAP_IGNORE(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   996
        const TDesC &desValue = aArguments.StringByNameL(KSifInParam_SourceUrl);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   997
        if (desValue.Length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   998
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
   999
            try
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1000
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1001
                std::wstring value((wchar_t *)(desValue.Ptr()), desValue.Length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1002
                std::wstring encodedValue = JavaCommonUtils::wbase64encode(value);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1003
                aCommandLine.Append(KSourceUrl);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1004
                aCommandLine.Append(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1005
                    (const unsigned short *)encodedValue.c_str(), (int)encodedValue.length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1006
                base64EncodedArgs.append(L"sourceurl,");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1007
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1008
            catch (std::exception& e)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1009
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1010
                ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1011
                    "CJavaSifPlugin::BuildInstallCommandLine Base64 encoding source "
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1012
                    "url failed, err %s", e.what());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1013
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1014
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1015
    )
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1016
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1017
    // KSifInParam_Charset -> -charset=Internet-standard character set name
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1018
    TRAP_IGNORE(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1019
        const TDesC &desValue = aArguments.StringByNameL(KSifInParam_Charset);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1020
        if (desValue.Length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1021
        {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1022
            try
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1023
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1024
                std::wstring value((wchar_t *)(desValue.Ptr()), desValue.Length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1025
                std::wstring encodedValue = JavaCommonUtils::wbase64encode(value);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1026
                aCommandLine.Append(KCharSet);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1027
                aCommandLine.Append(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1028
                    (const unsigned short *)encodedValue.c_str(), (int)encodedValue.length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1029
                base64EncodedArgs.append(L"charset,");
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1030
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1031
            catch (std::exception& e)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1032
            {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1033
                ELOG1(EJavaInstaller,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1034
                    "CJavaSifPlugin::BuildInstallCommandLine Base64 encoding charset "
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1035
                    "failed, err %s", e.what());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1036
            }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1037
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1038
    )
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1039
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1040
    if (base64EncodedArgs.length() > 0)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1041
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1042
        // Tell Java Installer which arguments have been Base64 encoded
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1043
        aCommandLine.Append(KBase64);
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1044
        aCommandLine.Append(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1045
            (const unsigned short *)base64EncodedArgs.c_str(), (int)base64EncodedArgs.length());
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1046
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1047
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1048
    return;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1049
}
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1050
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1051
TInt CJavaSifPlugin::GetPositiveIntParam(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1052
        const TDesC& aName,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1053
        const COpaqueNamedParams& aArguments)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1054
{
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1055
    // Assume that the value will not be found
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1056
    TInt intValue = -1;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1057
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1058
    // If the value can be read, intValue will be set, otherwise this function
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1059
    // returns -1
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1060
    TRAP_IGNORE((void)aArguments.GetIntByNameL(aName, intValue));  // codescanner::voidparameter
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1061
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1062
    return intValue;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1063
}
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1064
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1065
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1066
TInt CJavaSifPlugin::StartResultsServer(
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1067
    COpaqueNamedParams& aResults,
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1068
    CComponentInfo& aComponentInfo)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1069
{
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1070
    // Destroy old Comms server if it exists
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1071
    delete mResultsServer;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1072
    mResultsServer = NULL;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1073
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1074
    // Start new Comms server
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1075
    mResultsServer = new ResultsServer(aResults, aComponentInfo);  // codescanner::nonleavenew
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1076
    if (NULL == mResultsServer)
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1077
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1078
        return KErrNoMemory;
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1079
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1080
    else
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1081
    {
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1082
        // Start the server
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1083
        return mResultsServer->start();
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1084
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1085
}
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1086
35baca0e7a2e v2.2.3_1
hgs
parents: 35
diff changeset
  1087
35
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1088
TBool CJavaSifPlugin::ExitIfJavaInstallerRunning(
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1089
    COpaqueNamedParams& aResults,
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1090
    TRequestStatus& aStatus)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1091
{
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1092
    // If Java Installer is already running, set error category EInstallerBusy etc
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1093
    // to aResults and return
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1094
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1095
    TInt err(KErrNone);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1096
    RProcess proc;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1097
    TFindProcess finder(KJavaInstallerProcess);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1098
    TFullName procName;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1099
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1100
    // Java Installer process SID is 0x102033E6 and name is "Installer"
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1101
    while (finder.Next(procName) == KErrNone)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1102
    {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1103
        if (proc.Open(finder) != KErrNone)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1104
        {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1105
            continue;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1106
        }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1107
        if (proc.SecureId() == KJavaInstallerSecureID)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1108
        {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1109
            if (proc.ExitType() == EExitPending)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1110
            {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1111
                // Java Installer process is already running
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1112
                proc.Close();
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1113
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1114
                // return error information
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1115
                TRAP(err, aResults.AddIntL(KSifOutParam_ErrCategory, EInstallerBusy));
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1116
                if (KErrNone != err)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1117
                {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1118
                    ELOG1(EJavaInstaller,
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1119
                        "CJavaSifPlugin::ExitIfJavaInstallerRunning aResults.AddIntL "
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1120
                        "ErrCategory err %d", err);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1121
                }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1122
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1123
                TRAP(err, aResults.AddIntL(KSifOutParam_ErrCode, KErrInUse));
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1124
                if (KErrNone != err)
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1125
                {
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1126
                    ELOG1(EJavaInstaller,
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1127
                        "CJavaSifPlugin::ExitIfJavaInstallerRunning aResults.AddIntL "
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1128
                        "ErrCode err %d", err);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1129
                }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1130
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1131
                // TODO: return also localized error message from usif
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1132
                // common localization file after the localized strings are available
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1133
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1134
                TRequestStatus *statusPtr(&aStatus);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1135
                User::RequestComplete(statusPtr, KErrInUse);
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1136
                return ETrue;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1137
            }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1138
       }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1139
       proc.Close();
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1140
    }
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1141
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1142
    return EFalse;
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1143
}
85266cc22c7f Revision: v2.2.1
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 21
diff changeset
  1144
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
  1145
//  End of File