javatools/javaupdater/src/main.cpp
branchRCL_3
changeset 18 9ac0a0a7da70
parent 17 0fd27995241b
child 19 71c436fe3ce0
--- a/javatools/javaupdater/src/main.cpp	Tue May 11 16:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,307 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  OMJ S60 environment updater process.
-*               When OMJ is installed, this program is executed to allow
-*               new Java environment taken into use.
-*/
-
-
-#include <e32std.h>
-#include <e32base.h>
-#include <f32file.h>
-#include <apgtask.h>
-#include <w32std.h>
-#include <swinstapi.h>
-#include <centralrepository.h>
-#include <hal.h>
-
-#include "javauids.h"
-#include "systemamstraderprivateclient.h"
-#include "logger.h"
-
-// This file is used to indicate when converting old S60 midlets
-// to OMJ midlets has been done.
-_LIT(KConversionOngoing, "D:\\OMJConverting.dat");
-
-
-/**
- * Kill old and running javaregistry.exe. After killing next call of
- * Registry API re-starts the new server process.
- */
-static void KillRegistry()
-{
-    JELOG2(EJavaConverters);
-    TFullName processName;
-    _LIT(KJavaRegistryProcess, "javaregistr*");
-    TFindProcess finder(KJavaRegistryProcess);
-
-    if (finder.Next(processName) != KErrNotFound)
-    {
-        RProcess processToKill;
-        TInt err = processToKill.Open(finder);
-
-        if (KErrNone != err)
-        {
-            WLOG1(EJavaConverters,
-                  "javaupdater: KillRegistry: Process open: %d", err);
-        }
-        else
-        {
-            LOG(EJavaConverters, EInfo, "javaupdater: KillRegistry: Killing javaregistry");
-            processToKill.Kill(KErrNone);
-            processToKill.Close();
-        }
-    }
-    else
-    {
-        WLOG(EJavaConverters, "javaupdater: KillRegistry: Registry process not found");
-    }
-}
-
-/**
- * Kill running System AMS processes.
- */
-static void KillSystemAms()
-{
-    JELOG2(EJavaConverters);
-
-    TBool connectionOK(EFalse);
-    TRequestStatus status(KRequestPending);
-    RSystemAMSTraderPrivateClient amsClient;
-
-    connectionOK = amsClient.ShutdownJavaEnv(status);
-    if (connectionOK)
-    {
-        // systemams process in this device supports nice shutdown.
-        // Wait until the S60 java environment has been shutdown
-        LOG(EJavaConverters,
-            EInfo, "javaupdater: KillSystemAms: Waiting for systemams nice shutdown");
-        User::WaitForRequest(status);
-        LOG(EJavaConverters,
-            EInfo, "javaupdater: KillSystemAms: Systemams has shutdown");
-        amsClient.Close();
-    }
-    else
-    {
-        // must kill SystemAMS trader and SystemAMS itself
-        TFullName processName;
-        _LIT(KJavaSystemAmsTraderProcess, "SystemAMS.EXE*");
-        TFindProcess finder(KJavaSystemAmsTraderProcess);
-
-        if (finder.Next(processName) == KErrNone)
-        {
-            RProcess processToKill;
-            TInt err = processToKill.Open(finder);
-
-            if (KErrNone != err)
-            {
-                WLOG1(EJavaConverters,
-                      "javaupdater: KillSystemAms: Cannot open SystemAMS trader process: %d", err);
-            }
-            else
-            {
-                LOG(EJavaConverters, EInfo,
-                    "javaupdater:KillSystemAms: Killing SystemAMS trader");
-                processToKill.Kill(KErrNone);
-                processToKill.Close();
-            }
-        }
-
-        // now kill SystemAMS itself
-        _LIT(KJavaSystemAmsProcess, "SystemAMSCore.EXE*");
-        finder.Find(KJavaSystemAmsProcess);
-
-        if (finder.Next(processName) == KErrNone)
-        {
-            RProcess processToKill;
-            TInt err = processToKill.Open(finder);
-
-            if (KErrNone != err)
-            {
-                WLOG1(EJavaConverters,
-                      "javaupdater: KillSystemAms: Cannot open SystemAMS process: %d", err);
-            }
-            else
-            {
-                LOG(EJavaConverters, EInfo, "javaupdater: KillSystemAms Killing SystemAMS ");
-                processToKill.Kill(KErrNone);
-                processToKill.Close();
-            }
-        }
-    }
-}
-
-/**
- * Try to kill old javapreinstaller
- */
-static void KillOldPreinstaller()
-{
-    JELOG2(EJavaConverters);
-
-    TFullName processName;
-    _LIT(KJavaOldPreinstallerProcess, "MIDP2SilentMIDletInstall.exe*");
-    TFindProcess finder(KJavaOldPreinstallerProcess);
-
-    if (finder.Next(processName) == KErrNone)
-    {
-        RProcess processToKill;
-        TInt err = processToKill.Open(finder);
-
-        if (KErrNone != err)
-        {
-            WLOG1(EJavaConverters,
-                  "javaupdater: KillOldPreinstallerL: Process open: %d", err);
-        }
-        else
-        {
-            LOG(EJavaConverters, EInfo, "javaupdater: Killing MIDP2SilentMIDletInstall");
-            processToKill.Kill(KErrNone);
-            processToKill.Close();
-        }
-    }
-}
-
-/**
- * Start OMJ trader (systemams.exe) in IAD mode.
- * It will start Java Captain in IAD mode and
- * it will start Java Preinstaller in IAD mode.
- */
-_LIT(KOmjTraderExe, "systemams.exe");
-_LIT(KOmjTraderArg, "iad");
-static void StartOmjTrader()
-{
-    JELOG2(EJavaConverters);
-    RProcess proc;
-    int rc = proc.Create(KOmjTraderExe, KOmjTraderArg);
-    if (rc == KErrNone)
-    {
-        proc.Resume();
-        LOG(EJavaConverters, EInfo, "javaupdater: StartOmjTrader systemams.exe was started ok");
-    }
-    else
-    {
-        ELOG1(EJavaConverters, "javaupdater: StartOmjTrader failed: %d", rc);
-    }
-    proc.Close();
-}
-
-/**
- * Copies (and configures) the certificates from legacy java
- */
-_LIT(KJavaCertfictatesConfiguratorExe, "javacertificatesconfigurator.exe");
-static void ConfigureCertificates()
-{
-    JELOG2(EJavaConverters);
-    RProcess proc;
-    int rc = proc.Create(KJavaCertfictatesConfiguratorExe, KNullDesC());
-    if (rc == KErrNone)
-    {
-        proc.Resume();
-        TRequestStatus status;
-        proc.Logon(status);
-        User::WaitForRequest(status);
-    }
-    else
-    {
-        ELOG1(EJavaConverters, "javaupdater: ConfigureCertificates failed: %d", rc);
-    }
-    proc.Close();
-}
-
-/**
- * Wait until preinstallation of OMJ midlets has been done.
- */
-static void WaitUntilPreinstallerReady()
-{
-    // Create a temporary file that javapreinstaller.exe will
-    // then destroy after reinstallation has been done
-    TUint value;
-    RFs   fs;
-    RFile flagFile;
-    TBool flagFileExists(ETrue);
-    TInt err = fs.Connect();
-    if (KErrNone != err)
-    {
-        ELOG1(EJavaConverters,
-              "javaupdater: WaitUntilPreinstallerReady: Cannot connect to RFs, err %d",
-              err);
-        return;
-    }
-    err = flagFile.Replace(fs, KConversionOngoing, EFileShareAny|EFileWrite);
-    if (KErrNone != err)
-    {
-        ELOG1(EJavaConverters,
-              "javaupdater: WaitUntilPreinstallerReady: Cannot create conversion flag file, err %d",
-              err);
-        fs.Close();
-        return;
-    }
-    flagFile.Close();
-
-    // Now wait until the file is destroyed
-    do
-    {
-        TRequestStatus status;
-        fs.NotifyChange(ENotifyFile, status, KConversionOngoing);
-        User::WaitForRequest(status);
-        LOG1(EJavaConverters,
-             EInfo,
-             "javaupdater: WaitUntilPreinstallerReady: Wait ended with status %d",
-             status.Int());
-
-        // Check whether the flag file has been destroyed
-        err = fs.Att(KConversionOngoing, value);
-        if ((KErrNotFound == err) || (KErrPathNotFound == err))
-        {
-            flagFileExists = EFalse;
-        }
-        else if (KErrNone == err)
-        {
-            flagFileExists = ETrue;
-            LOG(EJavaConverters,
-                EInfo,
-                "javaupdater: WaitUntilPreinstallerReady: Flag file still exists, must wait more");
-        }
-        else
-        {
-            WLOG1(EJavaConverters,
-                  "javaupdater: WaitUntilPreinstallerReady: Unexpected error %d, stop waiting",
-                  err);
-            flagFileExists = EFalse;
-        }
-
-    }
-    while (flagFileExists);
-
-    fs.Close();
-}
-
-/**
- * Create cleanup stack and run the cleaner code inside TRAP harness
- * to log unexpected leaves.
- */
-TInt E32Main()
-{
-    __UHEAP_MARK;
-    CTrapCleanup* cleanupStack = CTrapCleanup::New();
-    KillRegistry();
-    KillSystemAms();
-    KillOldPreinstaller();
-    ConfigureCertificates();
-    StartOmjTrader();
-    WaitUntilPreinstallerReady();
-    delete cleanupStack;
-    __UHEAP_MARKEND;
-    return KErrNone;
-}