--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/interpretsislib/interpretsis.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+*
+*/
+
+
+#pragma warning (disable: 4786)
+
+#include <iostream>
+#include <memory>
+
+#include "interpretsis.h"
+#include "uninstaller.h"
+#include "parameterlist.h"
+
+CInterpretSIS::CInterpretSIS(TParamPtr aParamList):
+ iParamList(aParamList)
+ {
+ ConstructL();
+ }
+
+CInterpretSIS::~CInterpretSIS()
+ {
+ delete iInstaller;
+ delete iSisRegistry;
+ delete iConfigManager;
+ }
+
+void CInterpretSIS::ConstructL()
+ {
+ iParamList->ValidateParam();
+ iRomManager = TRomManagerPtr(RomManager::New(*iParamList));
+ iConfigManager = new ConfigManager(*iParamList);
+ iSisRegistry = new SisRegistry( *iParamList, *iRomManager, *iConfigManager);
+
+ #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+ // Validate the mutual exclusion of reg file version and origin verification status specification.
+ // This is done here because reg file can be specified via the file (z:\system\data\sisregistry_*.*.txt)
+ // during SisRegistry object creation.
+ if (iParamList->RegistryVersionExists() && !(iParamList->OriginVerificationStatus()))
+ {
+ // Both reg file version(either via -k or via file) and -f options are mutually exclusive
+ throw CParameterList::EParamRegVersionOriginVerificationExclusive;
+ }
+ #endif
+
+ iInstaller = new Installer(*iSisRegistry, *iParamList, *iRomManager, *iConfigManager);
+
+ // And ensure that any language code specified via the command line
+ // overrides a value in the config file.
+ if (iParamList->IsFlagSet(CParameterList::EFlagsLanguageWasSet))
+ {
+ iConfigManager->SetValue( KVariableLanguage, iParamList->Language());
+ }
+ }
+
+int CInterpretSIS::Install()
+ {
+ int retValue = 0;
+ if (iParamList->FileNames().empty())
+ {
+ return retValue;
+ }
+
+ // There is at least one sis file to be installed
+ const CParameterList::SISFileList& files = iParamList->FileNames();
+
+ // Install the sis files
+ retValue = iInstaller->Install(files);
+
+ if (!iInstaller->GetMissing().empty())
+ {
+ const Installer::MissingDeps& missing = iInstaller->GetMissing();
+
+ for (Installer::MissingDeps::const_iterator dependenciesIt = missing.begin();
+ dependenciesIt != missing.end();
+ ++dependenciesIt)
+ {
+ if (!dependenciesIt->second.empty())
+ {
+ LERROR(L"Package " << dependenciesIt->first << L" requires:");
+ for (std::vector<SisRegistryDependency>::const_iterator dependantsIt = dependenciesIt->second.begin();
+ dependantsIt != dependenciesIt->second.end() ;
+ ++dependantsIt)
+ {
+ LERROR(L"\t" << *dependantsIt);
+ }
+ }
+ }
+ }
+ return retValue;
+ }
+
+void CInterpretSIS::Uninstall()
+ {
+ // Check if uninstallation is required or not
+ if (!iParamList->PkgUidsToRemove().empty())
+ {
+ // Uninstall the sis files
+ Uninstaller uninstall = Uninstaller(*iSisRegistry, *iParamList);
+ uninstall.Uninstall();
+ }
+ }
+
+// End of File