X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fwgt%2Fwgt_installer.cc;h=29b9bfdced894125b6411de3124f0cbd470c0a9d;hb=5a5f711ab6ca1fa0e578a058c75f5d9aac984f69;hp=59cfa91b9946d39c801555bb195c5d40be258d45;hpb=4d8b0f4845ff867b1b94161d1f6da5b392d97741;p=platform%2Fcore%2Fappfw%2Fwgt-backend.git diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index 59cfa91..29b9bfd 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -6,19 +6,21 @@ #include +#include #include #include #include #include +#include #include #include #include #include #include +#include #include #include -#include -#include +#include #include #include #include @@ -29,12 +31,16 @@ #include #include #include +#include #include +#include #include +#include #include #include #include #include +#include #include #include #include @@ -43,11 +49,15 @@ #include #include #include +#include +#include #include #include #include #include #include +#include +#include #include #include #include @@ -58,9 +68,12 @@ #include #include #include +#include +#include #include #include #include +#include #include #include #include @@ -68,13 +81,16 @@ #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_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" @@ -83,9 +99,9 @@ #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" @@ -106,15 +122,99 @@ 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(); @@ -135,23 +235,30 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); + AddStep(); AddStep( ci::Plugin::ActionType::Install); - AddStep(); - AddStep(); - AddStep(); + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Update: { + } + + 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(); @@ -170,6 +277,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(true); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); @@ -177,22 +285,29 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); - AddStep(); AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); - AddStep(); - AddStep(); + AddStep(); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Uninstall: { + } + + void WgtInstaller::UninstallSteps() { AddStep(pkgmgr_); AddStep(); AddStep(); + AddStep(); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); AddStep(); AddStep(); AddStep(); @@ -206,15 +321,21 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Uninstall); AddStep(); AddStep(); AddStep(); - break; - } - case ci::RequestType::Reinstall: { + } + + 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(); @@ -225,28 +346,36 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); - AddStep(); + AddStep(); AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); AddStep(); - AddStep(); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Delta: { + } + + void WgtInstaller::DeltaSteps() { AddStep(pkgmgr_); AddStep(); AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, false); + AddStep(); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::BACKUP); + AddStep(); AddStep(); AddStep(); + AddStep(); AddStep("res/wgt/"); AddStep(); AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -262,6 +391,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(true); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); @@ -269,51 +399,56 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); - AddStep(); AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); - AddStep(); - AddStep(); + AddStep(); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Recovery: { + } + + void WgtInstaller::RecoverySteps() { AddStep(pkgmgr_); AddStep(); + AddStep(); AddStep( ci::configuration::StepParseManifest::ManifestLocation::RECOVERY, ci::configuration::StepParseManifest::StoreLocation::NORMAL); - AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Clear: { - AddStep(pkgmgr_); - AddStep( - ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, - ci::configuration::StepParseManifest::StoreLocation::NORMAL); - 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(); @@ -331,25 +466,32 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); + AddStep(); AddStep( ci::Plugin::ActionType::Install); - AddStep(); - AddStep(); - AddStep(); - AddStep(); + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(true); AddStep(); - break; - } - case ci::RequestType::MountUpdate: { + } + + 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(); @@ -366,29 +508,37 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); AddStep(); - AddStep(); AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); - AddStep(); - AddStep(); + AddStep(); + AddStep(true); AddStep(); - break; - } - case ci::RequestType::ManifestDirectInstall: { + } + + void WgtInstaller::ManifestDirectInstallSteps() { AddStep(pkgmgr_); AddStep( wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); + AddStep(); AddStep(); AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -398,20 +548,27 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); - AddStep(ci::Plugin::ActionType::Install); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); AddStep(); - AddStep(); + AddStep(ci::Plugin::ActionType::Install); + AddStep( + wgt::filesystem::WgtAdditionalSharedDirs); + AddStep(); AddStep(); - break; - } - case ci::RequestType::ManifestDirectUpdate: { + } + + void WgtInstaller::ManifestDirectUpdateSteps() { AddStep(pkgmgr_); AddStep( wgt::configuration::StepParse::ConfigLocation::INSTALLED, true); AddStep(); AddStep(); AddStep(); - AddStep(); + AddStep( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); AddStep(); AddStep(); AddStep(); @@ -421,28 +578,181 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::configuration::StepParseManifest::StoreLocation::BACKUP); AddStep(); AddStep(); - AddStep(); AddStep(); AddStep(); AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); + AddStep(); + 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(); - AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep(ci::Plugin::ActionType::Upgrade); + AddStep(); AddStep(); - break; - } - case ci::RequestType::Move: { + } + + 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( + ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep(); + AddStep( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + 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( + ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Install); + 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( + ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE); + AddStep( + ci::security::StepPrivacyPrivilege::ActionType::Update); + AddStep(); + AddStep( + ci::Plugin::ActionType::Upgrade); + AddStep(); + 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( + ci::security::StepPrivacyPrivilege::ActionType::Uninstall); + AddStep(); + } + + void WgtInstaller::MoveSteps() { AddStep(pkgmgr_); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::NORMAL); + AddStep(); AddStep(); AddStep(); AddStep(); - break; - } - case ci::RequestType::EnablePkg: { + } + + void WgtInstaller::EnablePkgSteps() { AddStep(pkgmgr_); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, @@ -452,9 +762,9 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable); AddStep( ci::Plugin::ActionType::Uninstall); - break; - } - case ci::RequestType::DisablePkg: { + } + + void WgtInstaller::DisablePkgSteps() { AddStep(pkgmgr_); AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, @@ -464,12 +774,16 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable); AddStep( ci::Plugin::ActionType::Uninstall); - break; - } - default: { + } + + void WgtInstaller::MigrateExtImgSteps() { + AddStep(pkgmgr_); + AddStep(); + AddStep(); + } + + void WgtInstaller::DefaultSteps() { AddStep(); - } } -} } // namespace wgt