From: Soyoung Kim Date: Fri, 8 Feb 2013 06:13:18 +0000 (+0900) Subject: Fixed uninstallation using pkgid and installation without pkgid in config.xml X-Git-Tag: submit/trunk/20130213.105128~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b75b45d19e939a03715c5f2aa0c0b079012474e;p=platform%2Fframework%2Fweb%2Fwrt-installer.git Fixed uninstallation using pkgid and installation without pkgid in config.xml [Issue#] N/A [Problem] 1. uninstallation failed using pkgid 2. installation failed without pkgid in config.xml [Cause] 1. there is no logic for uninstallation using pkgid 2. To create pkgid logic is wrong. [Solution] 1. add uninstallation for pkgid 2. fixed pkgid logic [SCMRequest] this package have to release with wrt-commons Change-Id: Icb0440a21e14527d2140ebf38a677f1b52c7bf2d --- diff --git a/src/jobs/widget_install/job_widget_install.cpp b/src/jobs/widget_install/job_widget_install.cpp index 9ba67fc..4303a56 100644 --- a/src/jobs/widget_install/job_widget_install.cpp +++ b/src/jobs/widget_install/job_widget_install.cpp @@ -347,7 +347,13 @@ void JobWidgetInstall::setTizenId( if(appid.length() > PACKAGE_ID_LENGTH) { m_installerContext.widgetConfig.tzPkgid = appid.substr(0, PACKAGE_ID_LENGTH); - } //else: this means appId is broken anyway + } else { + //old version appid only has 10byte random character is able to install for a while. + //this case appid equal pkgid. + m_installerContext.widgetConfig.tzPkgid = + *configInfo.tizenAppId; + shouldMakeAppid = true; + } } } else { shouldMakeAppid = true; @@ -390,6 +396,7 @@ void JobWidgetInstall::setTizenId( LogDebug("Regcomp failed"); } + LogDebug("Name : " << name); if (!name || (regexec(®x, DPL::ToUTF8String(*name).c_str(), static_cast(0), NULL, 0) != REG_NOERROR)) { // TODO : generate name move to wrt-commons diff --git a/src/jobs/widget_uninstall/job_widget_uninstall.cpp b/src/jobs/widget_uninstall/job_widget_uninstall.cpp index 6cf8009..e0bc8c4 100644 --- a/src/jobs/widget_uninstall/job_widget_uninstall.cpp +++ b/src/jobs/widget_uninstall/job_widget_uninstall.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#include #include #include #include @@ -29,6 +30,7 @@ using namespace WrtDB; namespace { //anonymous +const char* REG_TIZEN_PKGID_PATTERN = "^[a-zA-Z0-9]{10}$"; class UninstallerTaskFail : public DPL::TaskDecl { @@ -67,12 +69,26 @@ JobWidgetUninstall::JobWidgetUninstall(const std::string & tizenAppId, m_context.removeFinished = false; m_context.uninstallStep = UninstallerContext::UNINSTALL_START; m_context.job = this; - m_context.tzAppid = tizenAppId; m_context.isExternalWidget = getExternalWidgetFlag(); Try { - WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(tizenAppId)); + regex_t regx; + if(regcomp(®x, REG_TIZEN_PKGID_PATTERN, REG_NOSUB | REG_EXTENDED)!=0){ + LogDebug("Regcomp failed"); + } + + if ((regexec(®x, tizenAppId.c_str(), + static_cast(0), NULL, 0) == REG_NOERROR)) { + TizenAppId appid = + WrtDB::WidgetDAOReadOnly::getTzAppId( + DPL::FromUTF8String(tizenAppId)); + LogDebug("Get appid from pkgid : " << appid); + m_context.tzAppid = DPL::ToUTF8String(appid); + } else { + m_context.tzAppid = tizenAppId; + } + WrtDB::WidgetDAOReadOnly dao(DPL::FromUTF8String(m_context.tzAppid)); m_context.tzPkgid = DPL::ToUTF8String(dao.getTizenPkgId()); m_context.locations = WidgetLocation(m_context.tzPkgid); m_context.locations->registerAppid(m_context.tzAppid);