X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwgt%2Fwgt_installer.cc;h=bc4edde216506350099a231cc6cf023801fed940;hb=288ef1465c33ed345e0323e6040b4ddee3bbeaaa;hp=70b4f004eccea27fbd80c93f844ae8ec02fd45a8;hpb=2b417b2dc6cf479dd471a82bcdd4f44031d7af78;p=platform%2Fcore%2Fappfw%2Fwgt-backend.git diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc old mode 100644 new mode 100755 index 70b4f00..bc4edde --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -6,36 +6,56 @@ #include +#include #include #include #include #include +#include #include #include #include -#include +#include +#include +#include +#include +#include #include #include #include #include +#include #include #include #include +#include +#include +#include +#include +#include #include #include #include +#include #include +#include #include #include +#include #include #include +#include #include #include +#include #include +#include #include #include -#include +#include +#include #include +#include #include #include #include @@ -43,7 +63,9 @@ #include #include #include -#include +#include +#include +#include #include #include #include @@ -54,29 +76,36 @@ #include #include #include +#include +#include +#include #include -#include -#include +#include "wgt/shared_dirs.h" +#include "wgt/step/configuration/step_check_rds_manifest.h" +#include "wgt/step/configuration/step_check_start_files.h" #include "wgt/step/configuration/step_parse.h" -#include "wgt/step/configuration/step_parse_recovery.h" +#include "wgt/step/configuration/step_set_old_signature_files_location.h" #include "wgt/step/encryption/step_encrypt_resources.h" #include "wgt/step/encryption/step_remove_encryption_data.h" +#include "wgt/step/filesystem/step_copy_preview_icons.h" #include "wgt/step/filesystem/step_create_symbolic_link.h" #include "wgt/step/filesystem/step_wgt_patch_icons.h" #include "wgt/step/filesystem/step_wgt_patch_storage_directories.h" #include "wgt/step/filesystem/step_wgt_prepare_package_directory.h" #include "wgt/step/filesystem/step_wgt_resource_directory.h" +#include "wgt/step/filesystem/step_wgt_undo_patch_storage_directories.h" #include "wgt/step/filesystem/step_wgt_update_package_directory.h" #include "wgt/step/pkgmgr/step_generate_xml.h" -#include "wgt/step/rds/step_wgt_rds_modify.h" #include "wgt/step/security/step_add_default_privileges.h" #include "wgt/step/security/step_check_settings_level.h" #include "wgt/step/security/step_check_wgt_background_category.h" #include "wgt/step/security/step_check_wgt_notification_category.h" #include "wgt/step/security/step_check_wgt_ime_privilege.h" #include "wgt/step/security/step_direct_manifest_check_signature.h" +#include "wgt/step/security/step_check_extension_privileges.h" +#include "wgt/step/security/step_wgt_recover_signature.h" namespace ci = common_installer; @@ -89,13 +118,98 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) /* treat the request */ switch (pkgmgr_->GetRequestType()) { case ci::RequestType::Install : { + InstallSteps(); + break; + } + case ci::RequestType::Update: { + UpdateSteps(); + break; + } + case ci::RequestType::Uninstall: { + UninstallSteps(); + break; + } + case ci::RequestType::Reinstall: { + ReinstallSteps(); + break; + } + case ci::RequestType::Delta: { + DeltaSteps(); + break; + } + case ci::RequestType::Recovery: { + RecoverySteps(); + break; + } + case ci::RequestType::MountInstall: { + MountInstallSteps(); + break; + } + case ci::RequestType::MountUpdate: { + MountUpdateSteps(); + break; + } + case ci::RequestType::ManifestDirectInstall: { + ManifestDirectInstallSteps(); + break; + } + case ci::RequestType::ManifestDirectUpdate: { + ManifestDirectUpdateSteps(); + break; + } + case ci::RequestType::ReadonlyUpdateInstall: { + ReadonlyUpdateInstallSteps(); + break; + } + case ci::RequestType::ReadonlyUpdateUninstall: { + ReadonlyUpdateUninstallSteps(); + break; + } + case ci::RequestType::ManifestPartialInstall: { + ManifestPartialInstallSteps(); + break; + } + case ci::RequestType::ManifestPartialUpdate: { + ManifestPartialUpdateSteps(); + break; + } + case ci::RequestType::PartialUninstall: { + ManifestPartialUninstallSteps(); + break; + } + case ci::RequestType::Move: { + MoveSteps(); + break; + } + case ci::RequestType::EnablePkg: { + EnablePkgSteps(); + break; + } + case ci::RequestType::DisablePkg: { + DisablePkgSteps(); + break; + } + case ci::RequestType::MigrateExtImg: { + MigrateExtImgSteps(); + break; + } + default: { + DefaultSteps(); + } + } +} + void WgtInstaller::InstallSteps() { AddStep(pkgmgr_); AddStep(); AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); - AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -103,6 +217,8 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(false); AddStep(); AddStep(); AddStep(); @@ -110,22 +226,30 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Install); - AddStep(); - AddStep(); - break; - } - case ci::RequestType::Update: { + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(); + AddStep(); + } + + void WgtInstaller::UpdateSteps() { AddStep(pkgmgr_); AddStep(); AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); - AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -140,72 +264,96 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(true); AddStep(); - AddStep(); - AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); - AddStep(); - break; - } - case ci::RequestType::Uninstall: { + AddStep(); + AddStep(); + } + + void WgtInstaller::UninstallSteps() { AddStep(pkgmgr_); + AddStep(); AddStep(); + AddStep(); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::NORMAL); AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Uninstall); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); - break; - } - case ci::RequestType::Reinstall: { + AddStep(); + } + + void WgtInstaller::ReinstallSteps() { AddStep(pkgmgr_); + AddStep(); AddStep( - wgt::configuration::StepParse::ConfigLocation::PACKAGE, false); + wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, false); + AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::BACKUP); AddStep(); - AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Delta: { + AddStep(); + AddStep(); + } + + void WgtInstaller::DeltaSteps() { AddStep(pkgmgr_); AddStep(); - // TODO(t.iwanek): manifest is parsed twice... AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, false); - // start file may not have changed AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep("res/wgt/"); - AddStep( - wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); - AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -217,51 +365,66 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(true); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); - AddStep(); - break; - } - case ci::RequestType::Recovery: { + AddStep(); + AddStep(); + } + + void WgtInstaller::RecoverySteps() { AddStep(pkgmgr_); AddStep(); - AddStep(); - AddStep(); AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::RECOVERY, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Clear: { - AddStep(pkgmgr_); - AddStep(); - break; - } - case ci::RequestType::MountInstall: { + AddStep(); + } + + void WgtInstaller::MountInstallSteps() { AddStep(pkgmgr_); AddStep(); AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); - AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); @@ -270,22 +433,30 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Install); - AddStep(); - AddStep(); - break; - } - case ci::RequestType::MountUpdate: { + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(true); + AddStep(); + } + + void WgtInstaller::MountUpdateSteps() { AddStep(pkgmgr_); AddStep(); AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); - AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -298,46 +469,63 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); - AddStep(); - AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); - AddStep(); - break; - } - case ci::RequestType::ManifestDirectInstall: { + AddStep(true); + AddStep(); + } + + void WgtInstaller::ManifestDirectInstallSteps() { AddStep(pkgmgr_); AddStep( wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); - AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep(); - AddStep(ci::Plugin::ActionType::Install); + AddStep(); AddStep(); - break; - } - case ci::RequestType::ManifestDirectUpdate: { + AddStep(ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(); + AddStep(); + } + + void WgtInstaller::ManifestDirectUpdateSteps() { AddStep(pkgmgr_); AddStep( wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); - AddStep(); + AddStep(); + AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -347,17 +535,190 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::configuration::StepParseManifest::StoreLocation::BACKUP); AddStep(); AddStep(); - AddStep(); + AddStep(); + AddStep(); AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + } + + void WgtInstaller::ReadonlyUpdateInstallSteps() { + AddStep(pkgmgr_); + AddStep(); + AddStep( + wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); AddStep(); - break; - } - default: { + AddStep(); + AddStep(); + AddStep(ci::Plugin::ActionType::Upgrade); + AddStep(); + AddStep(); + } + + void WgtInstaller::ReadonlyUpdateUninstallSteps() { + AddStep(pkgmgr_); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(ci::Plugin::ActionType::Upgrade); + } + + void WgtInstaller::ManifestPartialInstallSteps() { + AddStep(pkgmgr_); + AddStep( + wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(); + } + + void WgtInstaller::ManifestPartialUpdateSteps() { + AddStep(pkgmgr_); + AddStep( + wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + } + + void WgtInstaller::ManifestPartialUninstallSteps() { + AddStep(pkgmgr_); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep( + ci::Plugin::ActionType::Uninstall); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + } + + void WgtInstaller::MoveSteps() { + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep(); + AddStep(); + } + + void WgtInstaller::EnablePkgSteps() { + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable); + AddStep( + ci::Plugin::ActionType::Uninstall); + } + + void WgtInstaller::DisablePkgSteps() { + AddStep(pkgmgr_); + AddStep( + ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, + ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); + AddStep( + ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable); + AddStep( + ci::Plugin::ActionType::Uninstall); + } + + void WgtInstaller::MigrateExtImgSteps() { + AddStep(pkgmgr_); + AddStep(); + AddStep(); + } + + void WgtInstaller::DefaultSteps() { AddStep(); - } } -} } // namespace wgt