From: Soyoung Kim Date: Fri, 5 Apr 2013 02:58:01 +0000 (+0900) Subject: Fixed can not install to sdcard X-Git-Tag: accepted/tizen_2.1/20130425.023916~12^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=ae944cb4e48008ab1a3991e91ab160a9451fe007;p=framework%2Fweb%2Fwrt-installer.git Fixed can not install to sdcard [Issue#] N/A [Problem] could not install to sdcard. [Cause] bug in compare string. [Solution] fixed compre string during check "location-type" field. [SCMRequest] N/A Change-Id: Iee38b1f52d2f2b7881052d8a7c1212138fda6cc6 --- diff --git a/src/jobs/widget_install/job_widget_install.cpp b/src/jobs/widget_install/job_widget_install.cpp index 4976db7..692b458 100644 --- a/src/jobs/widget_install/job_widget_install.cpp +++ b/src/jobs/widget_install/job_widget_install.cpp @@ -92,7 +92,7 @@ const size_t PACKAGE_ID_LENGTH = 10; static const DPL::String SETTING_VALUE_ENCRYPTION = L"encryption"; static const DPL::String SETTING_VALUE_ENCRYPTION_ENABLE = L"enable"; const DPL::String SETTING_VALUE_INSTALLTOEXT_NAME = - L"install-location-type"; + L"install-location"; const DPL::String SETTING_VALUE_INSTALLTOEXT_PREPER_EXT = L"prefer-external"; diff --git a/src/jobs/widget_install/task_file_manipulation.cpp b/src/jobs/widget_install/task_file_manipulation.cpp index a96b8ce..f044af9 100644 --- a/src/jobs/widget_install/task_file_manipulation.cpp +++ b/src/jobs/widget_install/task_file_manipulation.cpp @@ -47,7 +47,6 @@ using namespace WrtDB; namespace { const char* GLIST_RES_DIR = "res"; -const char* GLIST_BIN_DIR = "bin"; bool _FolderCopy(std::string source, std::string dest) { @@ -106,7 +105,7 @@ TaskFileManipulation::TaskFileManipulation(InstallerContext& context) : m_extHandle(NULL) { if (INSTALL_LOCATION_TYPE_EXTERNAL != - m_context.locationType) + m_context.locationType) { AddStep(&TaskFileManipulation::StepCreateDirs); AddStep(&TaskFileManipulation::StepCreatePrivateStorageDir); @@ -238,10 +237,10 @@ void TaskFileManipulation::StepPrepareExternalDir() { LogDebug("Step prepare to install in exernal directory"); Try { - std::string appid = - DPL::ToUTF8String(m_context.widgetConfig.tzAppid); + std::string pkgid = + DPL::ToUTF8String(m_context.widgetConfig.tzPkgid); - WidgetInstallToExtSingleton::Instance().initialize(appid); + WidgetInstallToExtSingleton::Instance().initialize(pkgid); size_t totalSize = Utils::getFolderSize(m_context.locations->getTemporaryPackageDir()); @@ -251,20 +250,16 @@ void TaskFileManipulation::StepPrepareExternalDir() GList *list = NULL; app2ext_dir_details* dirDetail = NULL; - std::string dirNames[2] = { GLIST_RES_DIR, GLIST_BIN_DIR }; - - for (int i = 0; i < 2; i++) { - dirDetail = (app2ext_dir_details*) calloc(1, - sizeof( - app2ext_dir_details)); - if (NULL == dirDetail) { - ThrowMsg(Exceptions::ErrorExternalInstallingFailure, - "error in app2ext"); - } - dirDetail->name = strdup(dirNames[i].c_str()); - dirDetail->type = APP2EXT_DIR_RO; - list = g_list_append(list, dirDetail); + dirDetail = (app2ext_dir_details*) calloc(1, + sizeof( + app2ext_dir_details)); + if (NULL == dirDetail) { + ThrowMsg(Exceptions::ErrorExternalInstallingFailure, + "error in app2ext"); } + dirDetail->name = strdup(GLIST_RES_DIR); + dirDetail->type = APP2EXT_DIR_RO; + list = g_list_append(list, dirDetail); if (m_context.isUpdateMode) { WidgetInstallToExtSingleton::Instance().preUpgrade(list, @@ -275,6 +270,10 @@ void TaskFileManipulation::StepPrepareExternalDir() } free(dirDetail); g_list_free(list); + + /* make bin directory */ + std::string widgetBinPath = m_context.locations->getBinaryDir(); + WrtUtilMakeDir(widgetBinPath); } Catch(WidgetInstallToExt::Exception::ErrorInstallToExt) { diff --git a/src/jobs/widget_uninstall/job_widget_uninstall.cpp b/src/jobs/widget_uninstall/job_widget_uninstall.cpp index 2005f21..4dc7745 100644 --- a/src/jobs/widget_uninstall/job_widget_uninstall.cpp +++ b/src/jobs/widget_uninstall/job_widget_uninstall.cpp @@ -89,7 +89,6 @@ JobWidgetUninstall::JobWidgetUninstall( m_context.removeAbnormal = false; m_context.uninstallStep = UninstallerContext::UNINSTALL_START; m_context.job = this; - m_context.isExternalWidget = getExternalWidgetFlag(); Try { @@ -243,17 +242,5 @@ void JobWidgetUninstall::SaveExceptionData(const Jobs::JobExceptionBase &e) m_exceptionCaught = static_cast(e.getParam()); m_exceptionMessage = e.GetMessage(); } - -bool JobWidgetUninstall::getExternalWidgetFlag() const -{ - LogDebug("Get external widget"); - if (APP2EXT_SD_CARD == - app2ext_get_app_location(m_context.tzAppid.c_str())) - { - LogDebug("This widget is in external stroage"); - return true; - } - return false; -} } //namespace WidgetUninstall } //namespace Jobs diff --git a/src/jobs/widget_uninstall/job_widget_uninstall.h b/src/jobs/widget_uninstall/job_widget_uninstall.h index d38d551..1ea6fe5 100644 --- a/src/jobs/widget_uninstall/job_widget_uninstall.h +++ b/src/jobs/widget_uninstall/job_widget_uninstall.h @@ -55,7 +55,6 @@ class JobWidgetUninstall : std::string getRemovedTizenId() const; bool getRemoveStartedFlag() const; bool getRemoveFinishedFlag() const; - bool getExternalWidgetFlag() const; enum class WidgetStatus { diff --git a/src/jobs/widget_uninstall/task_remove_files.cpp b/src/jobs/widget_uninstall/task_remove_files.cpp index d000f4a..7d501be 100644 --- a/src/jobs/widget_uninstall/task_remove_files.cpp +++ b/src/jobs/widget_uninstall/task_remove_files.cpp @@ -48,11 +48,7 @@ TaskRemoveFiles::TaskRemoveFiles(UninstallerContext& context) : DPL::TaskDecl(this), m_context(context) { - if (!m_context.isExternalWidget) { - AddStep(&TaskRemoveFiles::StepRemoveInstallationDirectory); - } else { - AddStep(&TaskRemoveFiles::StepRemoveExternalWidget); - } + AddStep(&TaskRemoveFiles::StepRemoveInstallationDirectory); AddStep(&TaskRemoveFiles::StepRemoveManifest); AddStep(&TaskRemoveFiles::StepRemoveExternalLocations); AddStep(&TaskRemoveFiles::StepRemoveVconf); @@ -65,16 +61,32 @@ TaskRemoveFiles::~TaskRemoveFiles() void TaskRemoveFiles::StepRemoveInstallationDirectory() { LogInfo("StepRemoveInstallationDirectory started"); - - m_context.removeStarted = true; - std::string widgetDir = - m_context.locations->getPackageInstallationDir(); - if (!WrtUtilRemove(widgetDir)) { - LogWarning("Removing widget installation directory failed"); - } - std::string dataDir = m_context.locations->getUserDataRootDir(); - if (!WrtUtilRemove(dataDir)) { - LogWarning(dataDir + " is already removed"); + if (APP2EXT_SD_CARD != + app2ext_get_app_location(m_context.tzPkgid.c_str())) + { + LogDebug("Removing directory"); + m_context.removeStarted = true; + std::string widgetDir = + m_context.locations->getPackageInstallationDir(); + if (!WrtUtilRemove(widgetDir)) { + LogWarning("Removing widget installation directory failed"); + } + std::string dataDir = m_context.locations->getUserDataRootDir(); + if (!WrtUtilRemove(dataDir)) { + LogWarning(dataDir + " is already removed"); + } + } else { + LogDebug("Removing sdcard directory"); + Try { + WidgetInstallToExtSingleton::Instance().initialize(m_context.tzPkgid); + WidgetInstallToExtSingleton::Instance().uninstallation(); + WidgetInstallToExtSingleton::Instance().deinitialize(); + } + Catch(WidgetInstallToExt::Exception::ErrorInstallToExt) + { + Throw(Jobs::WidgetUninstall::TaskRemoveFiles::Exception:: + RemoveFilesFailed); + } } m_context.job->UpdateProgress( UninstallerContext::UNINSTALL_REMOVE_WIDGETDIR, @@ -154,20 +166,5 @@ void TaskRemoveFiles::StepRemoveVconf() } } } - -void TaskRemoveFiles::StepRemoveExternalWidget() -{ - Try { - WidgetInstallToExtSingleton::Instance().initialize(m_context.tzPkgid); - WidgetInstallToExtSingleton::Instance().uninstallation(); - WidgetInstallToExtSingleton::Instance().deinitialize(); - } - Catch(WidgetInstallToExt::Exception::ErrorInstallToExt) - { - Throw( - Jobs::WidgetUninstall::TaskRemoveFiles::Exception:: - RemoveFilesFailed); - } -} } //namespace WidgetUninstall } //namespace Jobs diff --git a/src/jobs/widget_uninstall/task_remove_files.h b/src/jobs/widget_uninstall/task_remove_files.h index 0336443..2ea7375 100644 --- a/src/jobs/widget_uninstall/task_remove_files.h +++ b/src/jobs/widget_uninstall/task_remove_files.h @@ -52,7 +52,6 @@ class TaskRemoveFiles : void StepRemoveManifest(); void StepRemoveExternalLocations(); void StepRemoveVconf(); - void StepRemoveExternalWidget(); public: explicit TaskRemoveFiles(UninstallerContext& context); diff --git a/src/jobs/widget_uninstall/uninstaller_context.h b/src/jobs/widget_uninstall/uninstaller_context.h index 15625d1..f705b78 100644 --- a/src/jobs/widget_uninstall/uninstaller_context.h +++ b/src/jobs/widget_uninstall/uninstaller_context.h @@ -61,7 +61,6 @@ struct UninstallerContext Jobs::WidgetUninstall::JobWidgetUninstall *job; std::string tzAppid; std::string tzPkgid; - bool isExternalWidget; bool removeAbnormal; };