// Create installation tasks
if (m_installerContext.widgetConfig.packagingType !=
- WrtDB::PKG_TYPE_HOSTED_WEB_APP || !m_isDRM) {
+ WrtDB::PKG_TYPE_DIRECTORY_WEB_APP &&
+ m_installerContext.widgetConfig.packagingType !=
+ WrtDB::PKG_TYPE_HOSTED_WEB_APP &&
+ !m_isDRM)
+ {
AddTask(new TaskUnzip(m_installerContext));
}
AddTask(new TaskWidgetConfig(m_installerContext));
- if (m_installerContext.widgetConfig.packagingType ==
- WrtDB::PKG_TYPE_HOSTED_WEB_APP ) {
+ if (m_installerContext.widgetConfig.packagingType ==
+ WrtDB::PKG_TYPE_HOSTED_WEB_APP ||
+ m_installerContext.widgetConfig.packagingType ==
+ WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+ {
AddTask(new TaskPrepareFiles(m_installerContext));
}
AddTask(new TaskCertify(m_installerContext));
LogInfo("Configure installation updated");
LogInfo("Widget Update");
if (m_installerContext.widgetConfig.packagingType !=
- WrtDB::PKG_TYPE_HOSTED_WEB_APP || !m_isDRM) {
+ WrtDB::PKG_TYPE_HOSTED_WEB_APP &&
+ m_installerContext.widgetConfig.packagingType !=
+ WrtDB::PKG_TYPE_DIRECTORY_WEB_APP &&
+ !m_isDRM)
+ {
AddTask(new TaskUnzip(m_installerContext));
}
AddTask(new TaskWidgetConfig(m_installerContext));
if (m_installerContext.widgetConfig.packagingType ==
- WrtDB::PKG_TYPE_HOSTED_WEB_APP ) {
+ WrtDB::PKG_TYPE_HOSTED_WEB_APP ||
+ m_installerContext.widgetConfig.packagingType ==
+ WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+ {
AddTask(new TaskPrepareFiles(m_installerContext));
}
{
std::string tempDir = Jobs::WidgetInstall::createTempPath();
- bool m_isDRM = isDRMWidget(widgetPath);
+ m_isDRM = isDRMWidget(widgetPath);
if (true == m_isDRM) {
LogDebug("decrypt DRM widget");
if(DecryptDRMWidget(widgetPath, tempDir)) {
updateTypeCheckBit = CalcWidgetUpdatePolicy(existingVersion,
incomingVersion);
// Calc proceed flag
- if ((m_jobStruct.updateMode & updateTypeCheckBit) > 0) {
+ if ((m_jobStruct.updateMode & updateTypeCheckBit) > 0 ||
+ m_jobStruct.updateMode ==
+ WidgetUpdateMode::PolicyDirectoryForceInstall)
+ {
LogInfo("Whether widget policy allow proceed ok");
ret = ConfigureResult::Updated;
}
new RootParser<WidgetParser>(configInfo,
DPL::FromUTF32String(
L"widget"))));
+ } else if (pkgType == PKG_TYPE_DIRECTORY_WEB_APP) {
+ parser.Parse(widgetSource + '/' + CONFIG_XML,
+ ElementParserPtr(
+ new RootParser<WidgetParser>(
+ configInfo,
+ DPL::FromUTF32String(L"widget"))));
} else {
if (!isDRM) {
std::unique_ptr<DPL::ZipInput> zipFile(
const std::string &widgetSource,
const std::string &tempPath)
{
- // Check installation type (config.xml or widget.wgt)
+ // Check installation type (direcotory/ or config.xml or widget.wgt)
+ if (WidgetUpdateMode::PolicyDirectoryForceInstall == m_jobStruct.updateMode)
+ {
+ LogDebug("Install directly from directory");
+ return PKG_TYPE_DIRECTORY_WEB_APP;
+ }
if (hasExtension(widgetSource, XML_EXTENSION)) {
LogInfo("Hosted app installation");
return PKG_TYPE_HOSTED_WEB_APP;
bool JobWidgetInstall::DecryptDRMWidget(std::string widgetPath,
std::string destPath)
{
- /* TODO :
+ /* TODO :
drm_trusted_sapps_decrypt_package_info_s package_info;
strncpy(package_info.sadcf_filepath, widgetPath.c_str(),
}
*/
if (drm_oem_intel_decrypt_package(const_cast<char*>(widgetPath.c_str()),
- const_cast<char*>(destPath.c_str())) != 0) {
+ const_cast<char*>(destPath.c_str())) != 0) {
return true;
} else {
return false;
void TaskPrepareFiles::StepCopyFiles()
{
- CopyFile(m_installerContext.locations->getWidgetSource());
+ if (m_installerContext.widgetConfig.packagingType == WrtDB::PKG_TYPE_DIRECTORY_WEB_APP)
+ {
+ LogError("Copying files to temp directory...");
+ //TODO: use different copy way - above function looks ok
+ std::string command = "cp -r ";
+ command += m_installerContext.locations->getWidgetSource();
+ command += "/* ";
+ command += m_installerContext.locations->getTemporaryPackageDir();
+ LogInfo("command: " << command);
+ system(command.c_str());
+ //copy all files
+ } else {
+ CopyFile(m_installerContext.locations->getWidgetSource());
- size_t last = m_installerContext.locations->getWidgetSource().find_last_of("\\/");
- std::string sourceDir = "";
- if (last != std::string::npos) {
- sourceDir = m_installerContext.locations->getWidgetSource().substr(0,last+1);
- }
+ size_t last = m_installerContext.locations->getWidgetSource().find_last_of("\\/");
+ std::string sourceDir = "";
+ if (last != std::string::npos) {
+ sourceDir = m_installerContext.locations->getWidgetSource().substr(0,last+1);
+ }
- LogDebug("Icons copy...");
- FOREACH(it, m_installerContext.widgetConfig.configInfo.iconsList) {
- std::ostringstream os;
- LogDebug("Coping: " << sourceDir << DPL::ToUTF8String(it->src));
- os << sourceDir << DPL::ToUTF8String(it->src);
- CopyFile(os.str());
+ LogDebug("Icons copy...");
+ FOREACH(it, m_installerContext.widgetConfig.configInfo.iconsList) {
+ std::ostringstream os;
+ LogDebug("Coping: " << sourceDir << DPL::ToUTF8String(it->src));
+ os << sourceDir << DPL::ToUTF8String(it->src);
+ CopyFile(os.str());
+ }
}
}