// // Open Service Platform // Copyright (c) 2012 Samsung Electronics Co., Ltd. // // Licensed under the Apache License, Version 2.0 (the License); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // /** * @file Installer.cpp * @brief This is the implementation file for %Installer class. */ #include #include #include #include #include #include #include "Installer.h" #include "PermissionManager.h" #include "ConfigurationManager.h" #include "InstallerUtil.h" using namespace Tizen::Base; using namespace Tizen::Base::Collection; using namespace Tizen::App::Package; using namespace Tizen::Io; Installer::Installer(void) :__pContext(null) { } Installer::~Installer(void) { } InstallerError Installer::Construct(InstallationContext* pContext) { __pContext = pContext; if (InstallerUtil::IsSymlink(PATH_OPT_APPS) == false) { if (File::IsFileExist(PATH_OPT_APPS) == false) { Directory::Create(PATH_OPT_APPS, false); InstallerUtil::ChangeMode(PATH_OPT_APPS, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); } } if (File::IsFileExist(PATH_OPT_USR) == false) { Directory::Create(PATH_OPT_USR, false); InstallerUtil::ChangeMode(PATH_OPT_USR, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); } if (File::IsFileExist(PATH_OPT_USR_APPS) == false) { Directory::Create(PATH_OPT_USR_APPS, false); InstallerUtil::ChangeMode(PATH_OPT_USR_APPS, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); } return INSTALLER_ERROR_NONE; } InstallationStep Installer::GetNext(InstallationStep step) { if (step == INSTALLER_STEP_PARSE_SIGNATURE) { step = INSTALLER_STEP_END; } else { step = (InstallationStep)(step + 1); } return step; } InstallerError Installer::OnInit(void) { AppLogTag(OSP_INSTALLER, "Installer::OnInit()"); return INSTALLER_ERROR_NONE; } InstallerError Installer::OnRegister(void) { AppLogTag(OSP_INSTALLER, "------------------------------------------"); AppLogTag(OSP_INSTALLER, "Installer::OnRegister() - START"); InstallationContext* pContext = GetContext(); TryReturn(pContext, INSTALLER_ERROR_INTERNAL_STATE, "[osp-installer] pContext is null"); InstallerOperation operation = pContext->GetInstallerOperation(); _PackageInfoImpl* pInfoImpl = null; _PackageManagerImpl *pManagerImpl = null; pManagerImpl = pManagerImpl->GetInstance(); TryReturn(pManagerImpl, INSTALLER_ERROR_INTERNAL_STATE, "[osp-installer] pManagerImpl is null"); pInfoImpl = pContext->GetPackageInfoImpl(); TryReturn(pInfoImpl, INSTALLER_ERROR_INTERNAL_STATE, "[osp-installer] pInfoImpl is null"); if (operation == INSTALLER_OPERATION_INSTALL) { pManagerImpl->UnregisterPackageInfo(pContext->GetAppId()); pManagerImpl->RegisterPackageInfo(*pContext->GetPackageInfoImpl()); } else { pManagerImpl->UnregisterPackageInfo(pContext->GetAppId()); } AppLogTag(OSP_INSTALLER, "Installer::OnRegister() - END"); AppLogTag(OSP_INSTALLER, "------------------------------------------"); return INSTALLER_ERROR_NONE; } InstallerError Installer::OnEnd(void) { AppLogTag(OSP_INSTALLER, "------------------------------------------"); AppLogTag(OSP_INSTALLER, "Installer::OnEnd() - START"); InstallationContext* pContext = GetContext(); TryReturn(pContext, INSTALLER_ERROR_INTERNAL_STATE, "[osp-installer] pContext is null"); InstallerOperation operation = pContext->GetInstallerOperation(); ConfigurationManager configurationManager; pContext->SetContinue(false); if (operation == INSTALLER_OPERATION_INSTALL) { PermissionManager::SetDirectory(pContext); PermissionManager::SetFile(pContext); configurationManager.CreateFile(pContext); configurationManager.UnregisterCertInfo(pContext); configurationManager.RegisterCertInfo(pContext); configurationManager.PostInstall(pContext, false); } else if (operation == INSTALLER_OPERATION_UNINSTALL) { configurationManager.RemoveFile(pContext); configurationManager.UnregisterCertInfo(pContext); configurationManager.PostUninstall(pContext); } AppLogTag(OSP_INSTALLER, "Installer::OnEnd() - END"); AppLogTag(OSP_INSTALLER, "------------------------------------------"); return INSTALLER_ERROR_NONE; } InstallerError Installer::OnError(void) { AppLogTag(OSP_INSTALLER, "Installer::OnError()"); InstallerOperation operation = __pContext->GetInstallerOperation(); ConfigurationManager configurationManager; if (operation == INSTALLER_OPERATION_INSTALL) { configurationManager.PostInstall(__pContext, true); } else { configurationManager.PostUninstall(__pContext); } return INSTALLER_ERROR_NONE; } InstallerError Installer::OnRollback(void) { AppLogTag(OSP_INSTALLER, "Installer::OnRollback()"); return INSTALLER_ERROR_NONE; } InstallerError Installer::OnUserCancel(void) { AppLogTag(OSP_INSTALLER, "Installer::OnUserCancel()"); return INSTALLER_ERROR_NONE; } InstallationContext* Installer::GetContext(void) { return __pContext; }