X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwrt-installer%2Fwrt-installer.cpp;h=77457f5372b2d10ca47f32df1376e760b6e871be;hb=bb6a49cba8cf075304d971b519809b1816bc53ad;hp=a61a96abda740a4a492d90b80f6ee3bc79366dd0;hpb=7318f9524c8f477b402ad3951496bfc2e27095b3;p=framework%2Fweb%2Fwrt-installer.git diff --git a/src/wrt-installer/wrt-installer.cpp b/src/wrt-installer/wrt-installer.cpp index a61a96a..77457f5 100644 --- a/src/wrt-installer/wrt-installer.cpp +++ b/src/wrt-installer/wrt-installer.cpp @@ -82,7 +82,6 @@ struct PluginInstallerData WrtInstaller::WrtInstaller(int argc, char **argv) : Application(argc, argv, "backend", false), DPL::TaskDecl(this), - m_installMode(WRT_INSTALL_MODE_UNKNOWN), m_packagePath(), m_initialized(false), m_numPluginsToInstall(0), @@ -175,10 +174,10 @@ void WrtInstaller::OnCreate() struct stat info; if (-1 != stat(m_argv[2], &info) && S_ISDIR(info.st_mode)) { LogInfo("Installing package directly from directory"); - m_installMode = WRT_INSTALL_MODE_INSTALL_DIRECTORY; + m_installMode.extension = InstallMode::ExtensionType::DIR; } else { LogInfo("Installing from regular location"); - m_installMode = WRT_INSTALL_MODE_INSTALL_WGT; + m_installMode.extension = InstallMode::ExtensionType::WGT; } m_packagePath = m_argv[2]; @@ -189,7 +188,17 @@ void WrtInstaller::OnCreate() return showHelpAndQuit(); } m_packagePath = m_argv[2]; - m_installMode = WRT_INSTALL_MODE_INSTALL_PRELOAD; + m_installMode.installTime = InstallMode::InstallTime::PRELOAD; + m_installMode.rootPath = InstallMode::RootPath::RO; + AddStep(&WrtInstaller::installStep); + } else if (arg == "-ipw" || arg == "--install-preload-writable") { + LogDebug("Install preload web application to writable storage"); + if (m_argc != 3) { + return showHelpAndQuit(); + } + m_packagePath = m_argv[2]; + m_installMode.installTime = InstallMode::InstallTime::PRELOAD; + m_installMode.rootPath = InstallMode::RootPath::RW; AddStep(&WrtInstaller::installStep); } else if (arg == "-c" || arg == "--csc-update") { // "path=/opt/system/csc/Ozq2iEG15R-2.0.0-arm.wgt:op=install:removable=true" @@ -208,7 +217,7 @@ void WrtInstaller::OnCreate() if (it->second == CSCConfiguration::VALUE_INSTALL) { LogDebug("operation = " << it->second); - m_installMode = WRT_INSTALL_MODE_INSTALL_WGT; + m_installMode.extension = InstallMode::ExtensionType::WGT; it = m_CSCconfigurationMap.find(CSCConfiguration::KEY_PATH); if (it == m_CSCconfigurationMap.end()) { return showHelpAndQuit(); @@ -249,7 +258,8 @@ void WrtInstaller::OnCreate() return showHelpAndQuit(); } LogInfo("Installing package directly from directory"); - m_installMode = WRT_INSTALL_MODE_REINSTALL; + m_installMode.command = InstallMode::Command::REINSTALL; + m_installMode.extension = InstallMode::ExtensionType::DIR; m_packagePath = m_argv[2]; AddStep(&WrtInstaller::installStep); } else { @@ -276,10 +286,10 @@ void WrtInstaller::OnCreate() struct stat info; if (-1 != stat(m_argv[4], &info) && S_ISDIR(info.st_mode)) { LogInfo("Installing package directly from directory"); - m_installMode = WRT_INSTALL_MODE_INSTALL_DIRECTORY; + m_installMode.extension = InstallMode::ExtensionType::DIR; } else { LogInfo("Installing from regular location"); - m_installMode = WRT_INSTALL_MODE_INSTALL_WGT; + m_installMode.extension = InstallMode::ExtensionType::WGT; } AddStep(&WrtInstaller::installStep); break; @@ -289,7 +299,8 @@ void WrtInstaller::OnCreate() break; case PKGMGR_REQ_REINSTALL: m_packagePath = m_argv[4]; - m_installMode = WRT_INSTALL_MODE_REINSTALL; + m_installMode.command = InstallMode::Command::REINSTALL; + m_installMode.extension = InstallMode::ExtensionType::DIR; AddStep(&WrtInstaller::installStep); break; default: @@ -312,8 +323,8 @@ void WrtInstaller::OnReset(bundle* /*b*/) void WrtInstaller::OnTerminate() { LogDebug("Wrt Shutdown now"); - PluginUtils::unlockPluginInstallation(m_installMode == - WRT_INSTALL_MODE_INSTALL_PRELOAD); + PluginUtils::unlockPluginInstallation( + m_installMode.installTime == InstallMode::InstallTime::PRELOAD); if (m_initialized) { wrt_installer_shutdown(); } @@ -414,8 +425,9 @@ void WrtInstaller::installPluginsStep() if (m_startupPluginInstallation) { LogInfo("Plugin installation started because new plugin package found"); - } else if (!PluginUtils::lockPluginInstallation(m_installMode == - WRT_INSTALL_MODE_INSTALL_PRELOAD)) { + } else if (!PluginUtils::lockPluginInstallation( + m_installMode.installTime == InstallMode::InstallTime::PRELOAD)) + { LogError("Failed to open plugin installation lock file" " Plugins are currently installed by other process"); staticWrtPluginInstallationCallback(WRT_INSTALLER_ERROR_PLUGIN_INSTALLATION_FAILED, @@ -745,6 +757,13 @@ void WrtInstaller::staticWrtStatusCallback(std::string tizenId, tizenId.c_str(), printMsg.c_str()); break; + case WRT_INSTALLER_ERROR_PRIVILEGE_LEVEL_VIOLATION: + This->m_returnStatus = 1; //this status is specific + fprintf(stderr, "## wrt-installer : %s %s has failed - " + "privilege level violation\n", + tizenId.c_str(), printMsg.c_str()); + break; + case WRT_INSTALLER_ERROR_MENU_ICON_NOT_FOUND: This->m_returnStatus = 1; //this status is specific fprintf(stderr, "## wrt-installer : %s %s has failed - " @@ -773,6 +792,13 @@ void WrtInstaller::staticWrtStatusCallback(std::string tizenId, tizenId.c_str(), printMsg.c_str()); break; + case WRT_INSTALLER_ERROR_ARGUMENT_INVALID: + This->m_returnStatus = 1; //this status is specific + fprintf(stderr, "## wrt-installer : %s %s has failed - " + "invalid argument\n", + tizenId.c_str(), printMsg.c_str()); + break; + case WRT_INSTALLER_ERROR_PACKAGE_ALREADY_INSTALLED: This->m_returnStatus = 1; //this status is specific fprintf(stderr, "## wrt-installer : %s %s has failed - " @@ -833,8 +859,9 @@ void WrtInstaller::staticWrtStatusCallback(std::string tizenId, This->m_returnStatus = 0; resultMsg += L" : " + DPL::FromUTF8String(PKGMGR_END_SUCCESS); - if (This->m_installMode == WRT_INSTALL_MODE_INSTALL_PRELOAD && - !This->m_packagePath.empty()) { + if (This->m_installMode.installTime == InstallMode::InstallTime::PRELOAD && + !This->m_packagePath.empty()) + { LogDebug("This widget is preloaded so it will be removed : " << This->m_packagePath); if (!WrtUtilRemove(This->m_packagePath)) { @@ -873,8 +900,9 @@ void WrtInstaller::staticWrtPluginInstallationCallback(WrtErrStatus status, } //remove lock file - if (!PluginUtils::unlockPluginInstallation(This->m_installMode == - WRT_INSTALL_MODE_INSTALL_PRELOAD)) { + if (!PluginUtils::unlockPluginInstallation( + This->m_installMode.installTime == InstallMode::InstallTime::PRELOAD)) + { LogInfo("Failed to remove installation lock"); } @@ -967,16 +995,17 @@ void WrtInstaller::installNewPlugins() { LogDebug("Install new plugins"); - if (!PluginUtils::lockPluginInstallation(m_installMode == - WRT_INSTALL_MODE_INSTALL_PRELOAD)) { + if (!PluginUtils::lockPluginInstallation( + m_installMode.installTime == InstallMode::InstallTime::PRELOAD)) + { LogInfo("Lock NOT created"); return; } if (!PluginUtils::checkPluginInstallationRequired()) { LogDebug("Plugin installation not required"); - PluginUtils::unlockPluginInstallation(m_installMode == - WRT_INSTALL_MODE_INSTALL_PRELOAD); + PluginUtils::unlockPluginInstallation( + m_installMode.installTime == InstallMode::InstallTime::PRELOAD); return; } @@ -1001,16 +1030,17 @@ CSCConfiguration::dataMap WrtInstaller::parseCSCConfiguration( const char* ptr = strtok(buf,":"); while (ptr != NULL) { std::string string = ptr; + ptr = strtok (NULL, ":"); size_t pos = string.find('='); if (pos == std::string::npos) { continue; } result.insert( CSCConfiguration::dataPair(string.substr(0, pos), - string.substr(pos+1))); - ptr = strtok (NULL, ":"); + string.substr(pos+1))); } - return result; + free(buf); + return result; } int main(int argc, char *argv[])