Fix adding steps using default steps
[platform/core/appfw/wgt-backend.git] / src / hybrid / hybrid_installer.cc
index 4d18750..d3accd7 100644 (file)
@@ -5,79 +5,11 @@
 #include "hybrid/hybrid_installer.h"
 
 #include <common/privileges.h>
-#include <common/step/backup/step_backup_icons.h>
-#include <common/step/backup/step_backup_manifest.h>
-#include <common/step/backup/step_copy_backup.h>
-#include <common/step/configuration/step_block_cross_update.h>
-#include <common/step/configuration/step_check_tizen_version.h>
-#include <common/step/configuration/step_configure.h>
 #include <common/step/configuration/step_fail.h>
-#include <common/step/configuration/step_parse_manifest.h>
-#include <common/step/configuration/step_parse_preload.h>
-#include <common/step/configuration/step_switch_readonly_mode.h>
-#include <common/step/filesystem/step_acquire_external_storage.h>
-#include <common/step/filesystem/step_optional_acquire_external_storage.h>
-#include <common/step/filesystem/step_change_ownership_and_permission.h>
-#include <common/step/filesystem/step_copy.h>
-#include <common/step/filesystem/step_copy_storage_directories.h>
-#include <common/step/filesystem/step_copy_tep.h>
-#include <common/step/filesystem/step_create_icons.h>
-#include <common/step/filesystem/step_create_globalapp_symlinks.h>
 #include <common/step/filesystem/step_create_storage_directories.h>
 #include <common/step/filesystem/step_delta_patch.h>
-#include <common/step/filesystem/step_disable_external_mount.h>
-#include <common/step/filesystem/step_enable_external_mount.h>
-#include <common/step/filesystem/step_migrate_legacy_external_image.h>
-#include <common/step/filesystem/step_recover_change_owner.h>
-#include <common/step/filesystem/step_recover_files.h>
-#include <common/step/filesystem/step_recover_icons.h>
-#include <common/step/filesystem/step_recover_manifest.h>
-#include <common/step/filesystem/step_recover_external_storage.h>
-#include <common/step/filesystem/step_recover_storage_directories.h>
-#include <common/step/filesystem/step_remove_files.h>
-#include <common/step/filesystem/step_remove_icons.h>
-#include <common/step/filesystem/step_remove_globalapp_symlinks.h>
-#include <common/step/filesystem/step_remove_per_user_storage_directories.h>
-#include <common/step/filesystem/step_remove_temporary_directory.h>
-#include <common/step/filesystem/step_remove_user_data.h>
-#include <common/step/filesystem/step_remove_zip_image.h>
-#include <common/step/filesystem/step_remove_tep.h>
-#include <common/step/filesystem/step_unzip.h>
-#include <common/step/filesystem/step_update_storage_directories.h>
-#include <common/step/filesystem/step_update_tep.h>
-#include <common/step/mount/step_mount_install.h>
-#include <common/step/mount/step_mount_unpacked.h>
-#include <common/step/mount/step_mount_recover.h>
-#include <common/step/mount/step_mount_update.h>
-#include <common/step/pkgmgr/step_check_force_clean.h>
-#include <common/step/pkgmgr/step_check_installable.h>
-#include <common/step/pkgmgr/step_check_removable.h>
-#include <common/step/pkgmgr/step_check_restriction.h>
-#include <common/step/pkgmgr/step_check_upgradable.h>
-#include <common/step/pkgmgr/step_kill_apps.h>
-#include <common/step/pkgmgr/step_recover_application.h>
-#include <common/step/pkgmgr/step_recover_parser_plugins.h>
-#include <common/step/pkgmgr/step_register_app.h>
-#include <common/step/pkgmgr/step_remove_manifest.h>
-#include <common/step/pkgmgr/step_run_parser_plugins.h>
-#include <common/step/pkgmgr/step_unregister_app.h>
-#include <common/step/pkgmgr/step_update_app.h>
-#include <common/step/pkgmgr/step_update_pkg_disable_info.h>
-#include <common/step/recovery/step_open_recovery_file.h>
-#include <common/step/recovery/step_create_recovery_file.h>
-#include <common/step/security/step_get_privilege_level.h>
-#include <common/step/security/step_privacy_privilege.h>
 #include <common/step/security/step_privilege_compatibility.h>
 #include <common/step/security/step_recover_privilege_compatibility.h>
-#include <common/step/security/step_recover_security.h>
-#include <common/step/security/step_register_security.h>
-#include <common/step/security/step_revoke_security.h>
-#include <common/step/security/step_revoke_trust_anchor.h>
-#include <common/step/security/step_rollback_installation_security.h>
-#include <common/step/security/step_signature.h>
-#include <common/step/security/step_update_security.h>
-#include <common/step/security/step_register_trust_anchor.h>
-#include <common/step/security/step_unregister_trust_anchor.h>
 
 #include <tpk/step/filesystem/step_create_tpk_symbolic_link.h>
 #include <tpk/step/filesystem/step_tpk_patch_icons.h>
@@ -119,142 +51,74 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
 }
 
 void HybridInstaller::InstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::InstallSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckInstallable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<hybrid::encryption::StepEncryptHybridResources>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepAcquireExternalStorage>(false);
-  AddStep<ci::filesystem::StepCopy>();
-  AddStep<ci::filesystem::StepCopyTep>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("Signature");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<hybrid::encryption::StepEncryptHybridResources>(
+      "CheckWgtImePrivilege");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>("CreateIcons");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<tpk::filesystem::StepCreateTpkSymbolicLink>();
-  AddStep<ci::pkgmgr::StepRegisterApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Install);
-  AddStep<ci::security::StepRegisterSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Install);
-  AddStep<ci::filesystem::StepCreateStorageDirectories>(
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::HybridAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CreateStorageDirectories");
 }
 
 void HybridInstaller::UpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::UpdateSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckUpgradable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<hybrid::encryption::StepEncryptHybridResources>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::configuration::StepBlockCrossUpdate>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::backup::StepBackupManifest>();
-  AddStep<ci::backup::StepBackupIcons>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
-  AddStep<ci::backup::StepCopyBackup>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<ci::filesystem::StepCopyStorageDirectories>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<hybrid::encryption::StepEncryptHybridResources>(
+      "CheckWgtImePrivilege");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>("CreateIcons");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<tpk::filesystem::StepCreateTpkSymbolicLink>();
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::filesystem::StepUpdateStorageDirectories>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CopyStorageDirectories");
 }
 
 void HybridInstaller::UninstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::pkgmgr::StepCheckRemovable>();
-  AddStep<ci::pkgmgr::StepCheckForceClean>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Uninstall);
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
-  AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>();
-  AddStep<ci::pkgmgr::StepUnregisterApplication>();
-  AddStep<ci::filesystem::StepRemoveTep>();
-  AddStep<ci::filesystem::StepRemoveFiles>();
-  AddStep<ci::filesystem::StepRemoveZipImage>();
-  AddStep<ci::filesystem::StepRemoveIcons>();
-  AddStep<wgt::encryption::StepRemoveEncryptionData>();
-  AddStep<ci::security::StepUnregisterTrustAnchor>();
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Uninstall);
-  AddStep<ci::security::StepRevokeSecurity>();
-  AddStep<ci::pkgmgr::StepRemoveManifest>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AppInstaller::UninstallSteps();
+  AddStepAfter<wgt::encryption::StepRemoveEncryptionData>(
+      "RemovePerUserStorageDirectories");
 }
 
 void HybridInstaller::ReinstallSteps() {
@@ -263,507 +127,304 @@ void HybridInstaller::ReinstallSteps() {
 }
 
 void HybridInstaller::DeltaSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<wgt::filesystem::StepWgtUndoPatchStorageDirectories>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::filesystem::StepEnableExternalMount>();
-  AddStep<ci::filesystem::StepDeltaPatch>();
-  AddStep<ci::filesystem::StepDisableExternalMount>();
-  AddStep<wgt::configuration::StepParse>(
-      wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<hybrid::encryption::StepEncryptHybridResources>();
-  AddStep<ci::configuration::StepBlockCrossUpdate>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::backup::StepBackupManifest>();
-  AddStep<ci::backup::StepBackupIcons>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
-  AddStep<ci::backup::StepCopyBackup>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<ci::filesystem::StepCopyStorageDirectories>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AppInstaller::DeltaSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckUpgradable");
+  AddStepAfter<wgt::filesystem::StepWgtUndoPatchStorageDirectories>(
+      "EnableExternalMount");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
+      wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, false);
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<hybrid::encryption::StepEncryptHybridResources>(
+      "CheckWgtImePrivilege");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>("CreateIcons");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<tpk::filesystem::StepCreateTpkSymbolicLink>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::filesystem::StepUpdateStorageDirectories>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CopyStorageDirectories");
 }
 
 void HybridInstaller::RecoverySteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepOpenRecoveryFile>();
-  AddStep<ci::filesystem::StepRemoveTemporaryDirectory>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::RECOVERY,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::filesystem::StepRecoverIcons>();
-  AddStep<ci::pkgmgr::StepRecoverParserPlugin>();
-  AddStep<ci::filesystem::StepRecoverManifest>();
-  AddStep<ci::filesystem::StepRecoverExternalStorage>();
-  AddStep<ci::filesystem::StepRecoverStorageDirectories>();
-  AddStep<ci::filesystem::StepRecoverFiles>();
-  AddStep<ci::mount::StepMountRecover>();
-  AddStep<tpk::security::StepTpkRecoverSignature>();
-  AddStep<ci::security::StepRecoverPrivilegeCompatibility>(
+  AppInstaller::RecoverySteps();
+  AddStepAfter<tpk::security::StepTpkRecoverSignature>("MountRecover");
+  AddStepAfter<ci::security::StepRecoverPrivilegeCompatibility>(
+      "TpkRecoverSignature",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<ci::filesystem::StepRecoverChangeOwner>();
-  AddStep<ci::security::StepRecoverSecurity>();
-  AddStep<ci::pkgmgr::StepRecoverApplication>();
 }
 
 void HybridInstaller::MountInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::mount::StepMountUnpacked>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::MountInstallSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckInstallable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<hybrid::encryption::StepEncryptHybridResources>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::mount::StepMountInstall>();
-  AddStep<tpk::filesystem::StepTpkPreparePackageDirectory>();
-  AddStep<ci::filesystem::StepCopyTep>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("Signature");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<hybrid::encryption::StepEncryptHybridResources>(
+      "CheckWgtImePrivilege");
+  AddStepAfter<tpk::filesystem::StepTpkPreparePackageDirectory>("MountInstall");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>("CreateIcons");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<tpk::filesystem::StepCreateTpkSymbolicLink>();
-  AddStep<ci::pkgmgr::StepRegisterApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Install);
-  AddStep<ci::security::StepRegisterSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Install);
-  AddStep<ci::filesystem::StepCreateStorageDirectories>(
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::HybridAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CreateStorageDirectories");
 }
 
 void HybridInstaller::MountUpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::mount::StepMountUnpacked>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::MountUpdateSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckUpgradable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<hybrid::encryption::StepEncryptHybridResources>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::configuration::StepBlockCrossUpdate>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::backup::StepBackupManifest>();
-  AddStep<ci::backup::StepBackupIcons>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::mount::StepMountUpdate>();
-  AddStep<tpk::filesystem::StepTpkUpdatePackageDirectory>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<hybrid::encryption::StepEncryptHybridResources>(
+      "CheckWgtImePrivilege");
+  AddStepAfter<tpk::filesystem::StepTpkUpdatePackageDirectory>("MountUpdate");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>("CreateIcons");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<tpk::filesystem::StepCreateTpkSymbolicLink>();
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::filesystem::StepUpdateStorageDirectories>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "UpdateStorageDirectories");
 }
 
 void HybridInstaller::ManifestDirectInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestDirectInstallSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckInstallable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("Signature");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>(
+      "RemoveGlobalAppSymlinks");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("WgtPatchIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<hybrid::configuration::StepSetMainapp>();
-  AddStep<ci::pkgmgr::StepRegisterApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Install);
-  AddStep<ci::security::StepRegisterSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Install);
-  AddStep<ci::filesystem::StepCreateStorageDirectories>(
+  AddStepAfter<hybrid::configuration::StepSetMainapp>("PrivilegeCompatibility");
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::HybridAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
 }
 
 void HybridInstaller::ManifestDirectUpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestDirectUpdateSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckUpgradable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>(
+      "RemoveGlobalAppSymlinks");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("WgtPatchIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<hybrid::configuration::StepSetMainapp>();
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::filesystem::StepUpdateStorageDirectories>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<hybrid::configuration::StepSetMainapp>("PrivilegeCompatibility");
 }
 
 void HybridInstaller::ManifestPartialInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestPartialInstallSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("ParseManifest");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepSetMainapp>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::security::StepSignature>(false);
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
-      ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(false);
-  AddStep<ci::pkgmgr::StepRegisterApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Install);
-  AddStep<ci::security::StepRegisterSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Install);
-  AddStep<ci::filesystem::StepCreateStorageDirectories>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("Signature");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
+      false);
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::HybridAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepBefore<hybrid::configuration::StepMergeTpkConfig>(
+      "RegisterApplication");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
+      ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
+  AddStepAfter<hybrid::configuration::StepSetMainapp>("PrivilegeCompatibility");
 }
 
 void HybridInstaller::ManifestPartialUpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestPartialUpdateSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("ParseManifest");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepSetMainapp>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::security::StepSignature>(false);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
+      false);
+  AddStepBefore<hybrid::configuration::StepMergeTpkConfig>("UpdateApplication");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(false);
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepRegisterSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::filesystem::StepUpdateStorageDirectories>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<hybrid::configuration::StepSetMainapp>("PrivilegeCompatibility");
 }
 
 void HybridInstaller::PartialUninstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::pkgmgr::StepCheckRemovable>();
-  AddStep<ci::pkgmgr::StepCheckForceClean>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Uninstall);
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
-  AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>();
-  AddStep<ci::pkgmgr::StepUnregisterApplication>();
-  AddStep<wgt::encryption::StepRemoveEncryptionData>();
-  AddStep<ci::security::StepUnregisterTrustAnchor>();
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Uninstall);
-  AddStep<ci::security::StepRevokeSecurity>();
+  AppInstaller::PartialUninstallSteps();
+  AddStepAfter<wgt::encryption::StepRemoveEncryptionData>(
+      "RemovePerUserStorageDirectories");
 }
 
 void HybridInstaller::ReadonlyUpdateInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ReadonlyUpdateInstallSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckUpgradable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<hybrid::encryption::StepEncryptHybridResources>();
-  AddStep<ci::configuration::StepSwitchReadonlyMode>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::configuration::StepSwitchReadonlyMode>();
-  AddStep<ci::configuration::StepBlockCrossUpdate>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepCopy>();
-  AddStep<ci::filesystem::StepCopyTep>();
-  AddStep<tpk::filesystem::StepTpkPatchIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<ci::filesystem::StepCreateStorageDirectories>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<hybrid::pkgmgr::StepMergeXml>();
-  AddStep<tpk::pkgmgr::StepManifestAdjustment>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<hybrid::encryption::StepEncryptHybridResources>(
+      "CheckWgtImePrivilege");
+  AddStepAfter<tpk::filesystem::StepTpkPatchIcons>("CreateIcons");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("TpkPatchIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<tpk::filesystem::StepCreateTpkSymbolicLink>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateTpkSymbolicLink");
+  AddStepAfter<hybrid::pkgmgr::StepMergeXml>("GenerateXml");
+  AddStepAfter<tpk::pkgmgr::StepManifestAdjustment>("MergeXml");
+  AddStepAfter<hybrid::configuration::StepMergeTpkConfig>("ManifestAdjustment");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<tpk::filesystem::StepCreateTpkSymbolicLink>();
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::filesystem::StepUpdateStorageDirectories>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CreateStorageDirectories");
 }
 
 void HybridInstaller::ReadonlyUpdateUninstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::pkgmgr::StepCheckRemovable>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::configuration::StepSwitchReadonlyMode>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<wgt::configuration::StepSetOldSignatureFilesLocation>();
-  AddStep<ci::security::StepSignature>(false);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
-      ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<ci::configuration::StepSwitchReadonlyMode>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepRemoveTep>();
-  AddStep<ci::filesystem::StepRemoveFiles>();
-  AddStep<ci::filesystem::StepRemoveZipImage>();
-  AddStep<hybrid::configuration::StepSetMainapp>();
-  AddStep<ci::pkgmgr::StepUpdateApplication>();
-  AddStep<ci::filesystem::StepRemoveUserData>();
-  AddStep<ci::configuration::StepSwitchReadonlyMode>();
-  AddStep<ci::security::StepRevokeTrustAnchor>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::pkgmgr::StepRemoveManifest>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Upgrade);
+  AppInstaller::ReadonlyUpdateUninstallSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckUpgradable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
+      wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("Signature");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepBefore<hybrid::configuration::StepMergeTpkConfig>("UpdateApplication");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
+      ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
+  AddStepAfter<hybrid::configuration::StepSetMainapp>("PrivilegeCompatibility");
 }
 
 void HybridInstaller::EnablePkgSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::pkgmgr::StepUpdatePkgDisableInfo>(
-      ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable);
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Install);
+  AppInstaller::EnablePkgSteps();
 }
 
 void HybridInstaller::DisablePkgSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::pkgmgr::StepUpdatePkgDisableInfo>(
-      ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable);
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Uninstall);
+  AppInstaller::DisablePkgSteps();
 }
 
 void HybridInstaller::MigrateExtImgSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::security::StepMigrateLegacyExtImage>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
+  AppInstaller::MigrateExtImgSteps();
 }
 
 void HybridInstaller::RecoverDBSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<hybrid::configuration::StepStashTpkConfig>();
-  AddStep<wgt::configuration::StepParse>(
-      wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<hybrid::configuration::StepMergeTpkConfig>();
-  AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
-  AddStep<ci::security::StepGetPrivilegeLevel>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AppInstaller::RecoverDBSteps();
+  AddStepAfter<hybrid::configuration::StepStashTpkConfig>("CheckInstallable");
+  AddStepAfter<wgt::configuration::StepParse>("StashTpkConfig",
+      wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("GetPrivilegeLevel");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepBefore<hybrid::configuration::StepMergeTpkConfig>(
+      "RegisterApplication");
+  AddStepAfter<hybrid::configuration::StepMergeTpkPrivileges>("MergeTpkConfig");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("MergeTpkPrivileges",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<hybrid::configuration::StepSetMainapp>();
-  AddStep<ci::pkgmgr::StepRegisterApplication>();
+  AddStepAfter<hybrid::configuration::StepSetMainapp>("PrivilegeCompatibility");
 }
 
 }  // namespace hybrid