Fix adding steps using default steps 17/207217/19
authorSangyoon Jang <jeremy.jang@samsung.com>
Thu, 30 May 2019 10:16:36 +0000 (19:16 +0900)
committerSangyoon Jang <jeremy.jang@samsung.com>
Mon, 30 Dec 2019 06:03:04 +0000 (15:03 +0900)
Requires:
 - https://review.tizen.org/gerrit/c/platform/core/appfw/app-installers/+/207215

Change-Id: Ic7ebf33c40b9899b3e71d6307bd3249b31ed3900
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
src/hybrid/hybrid_installer.cc
src/wgt/wgt_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
index 2187656..f74e37a 100644 (file)
@@ -7,87 +7,10 @@
 #include <common/pkgmgr_interface.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_install_location.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_move_installed_storage.h>
-#include <common/step/filesystem/step_recover_change_owner.h>
-#include <common/step/filesystem/step_recover_files.h>
-#include <common/step/filesystem/step_recover_globalapp_symlinks.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_tep.h>
-#include <common/step/filesystem/step_remove_user_data.h>
-#include <common/step/filesystem/step_remove_zip_image.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_check_mount_path.h>
-#include <common/step/mount/step_mount_install.h>
-#include <common/step/mount/step_mount_recover.h>
-#include <common/step/mount/step_mount_unpacked.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/rds/step_rds_modify.h>
-#include <common/step/rds/step_rds_parse.h>
-#include <common/step/recovery/step_open_recovery_file.h>
-#include <common/step/recovery/step_create_recovery_file.h>
-#include <common/step/security/step_check_old_certificate.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_recover_trust_anchor.h>
-#include <common/step/security/step_register_security.h>
-#include <common/step/security/step_revoke_security.h>
-#include <common/step/security/step_rollback_installation_security.h>
-#include <common/step/security/step_update_security.h>
-#include <common/step/security/step_register_trust_anchor.h>
-#include <common/step/security/step_revoke_trust_anchor.h>
-#include <common/step/security/step_signature.h>
-#include <common/step/security/step_unregister_trust_anchor.h>
 
 #include <wgt_manifest_handlers/widget_config_parser.h>
 
@@ -126,617 +49,332 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
 }
 
 void WgtInstaller::InstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::InstallSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("Signature",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<wgt::encryption::StepEncryptResources>();
-  AddStep<wgt::filesystem::StepWgtResourceDirectory>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepAcquireExternalStorage>(false);
-  AddStep<ci::filesystem::StepCopy>();
-  AddStep<ci::filesystem::StepCopyTep>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
+  AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::WgtAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CreateStorageDirectories");
 }
 
 void WgtInstaller::UpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::UpdateSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<ci::security::StepCheckOldCertificate>();
-  AddStep<wgt::encryption::StepEncryptResources>();
-  AddStep<wgt::filesystem::StepWgtResourceDirectory>();
-  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::security::StepRevokeTrustAnchor>();
-  AddStep<ci::backup::StepCopyBackup>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<ci::filesystem::StepCopyStorageDirectories>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
+  AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CopyStorageDirectories");
 }
 
 void WgtInstaller::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::configuration::StepCheckInstallLocation>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Uninstall);
-  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 WgtInstaller::ReinstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<wgt::configuration::StepCheckRDSManifest>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ReinstallSteps();
+  AddStepAfter<wgt::configuration::StepCheckRDSManifest>("Configure");
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, false);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::configuration::StepBlockCrossUpdate>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::security::StepRevokeTrustAnchor>();
-  AddStep<ci::rds::StepRDSParse>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<ci::rds::StepRDSModify>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  AddStep<ci::security::StepRegisterTrustAnchor>(
-      ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Upgrade);
-  AddStep<ci::security::StepPrivacyPrivilege>(
-      ci::security::StepPrivacyPrivilege::ActionType::Update);
-  AddStep<ci::security::StepUpdateSecurity>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  // Unlike reinstall mode (RDS) of tpk-backend, the RDS package of wgt does not
+  // contain signature files. This may can be changed differently later.
+  RemoveStep("Signature");
+  RemoveStep("CheckOldCertificate");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>("CreateIcons");
 }
 
 void WgtInstaller::DeltaSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::DeltaSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::PACKAGE, false);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::filesystem::StepEnableExternalMount>();
-  AddStep<wgt::filesystem::StepWgtUndoPatchStorageDirectories>();
-  AddStep<ci::filesystem::StepDeltaPatch>("res/wgt/");
-  AddStep<ci::filesystem::StepDisableExternalMount>();
-  AddStep<wgt::configuration::StepCheckStartFiles>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<wgt::filesystem::StepWgtUndoPatchStorageDirectories>(
+      "EnableExternalMount");
+  ReplaceStep<ci::filesystem::StepDeltaPatch>("DeltaPatch", "res/wgt/");
+  AddStepAfter<wgt::configuration::StepCheckStartFiles>("DisableExternalMount");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<ci::security::StepCheckOldCertificate>();
-  AddStep<wgt::encryption::StepEncryptResources>();
-  AddStep<wgt::filesystem::StepWgtResourceDirectory>();
-  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::security::StepRevokeTrustAnchor>();
-  AddStep<ci::backup::StepCopyBackup>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<ci::filesystem::StepCopyStorageDirectories>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
+  AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>("CopyPreviewIcons");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CopyStorageDirectories");
 }
 
 void WgtInstaller::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::StepRecoverGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepRecoverFiles>();
-  AddStep<ci::mount::StepMountRecover>();
-  AddStep<wgt::security::StepWgtRecoverSignature>();
-  AddStep<ci::security::StepRecoverPrivilegeCompatibility>(
+  AppInstaller::RecoverySteps();
+  AddStepAfter<wgt::security::StepWgtRecoverSignature>("MountRecover");
+  AddStepAfter<ci::security::StepRecoverPrivilegeCompatibility>(
+      "WgtRecoverSignature",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<ci::filesystem::StepRecoverChangeOwner>();
-  AddStep<ci::security::StepRecoverSecurity>();
-  AddStep<ci::pkgmgr::StepRecoverApplication>();
-  AddStep<ci::security::StepRecoverTrustAnchor>();
 }
 
 void WgtInstaller::MountInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::mount::StepMountUnpacked>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::MountInstallSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::pkgmgr::StepCheckRestriction>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("Signature",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<wgt::encryption::StepEncryptResources>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::mount::StepMountInstall>();
-  AddStep<wgt::filesystem::StepWgtPreparePackageDirectory>();
-  AddStep<ci::filesystem::StepCopyTep>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  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>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
+  AddStepAfter<wgt::filesystem::StepWgtPreparePackageDirectory>("MountInstall");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
+      "CopyPreviewIcons");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::WgtAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CreateStorageDirectories");
 }
 
 void WgtInstaller::MountUpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::mount::StepMountUnpacked>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::MountUpdateSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<ci::security::StepCheckOldCertificate>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::configuration::StepBlockCrossUpdate>();
-  AddStep<ci::security::StepRevokeTrustAnchor>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::backup::StepBackupManifest>();
-  AddStep<ci::backup::StepBackupIcons>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::mount::StepMountUpdate>();
-  AddStep<wgt::filesystem::StepWgtUpdatePackageDirectory>();
-  AddStep<ci::filesystem::StepUpdateTep>();
-  AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<ci::filesystem::StepCreateIcons>();
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
+  AddStepAfter<wgt::filesystem::StepWgtUpdatePackageDirectory>("MountUpdate");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
+      "CopyPreviewIcons");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "UpdateStorageDirectories");
 }
 
 void WgtInstaller::ManifestDirectInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestDirectInstallSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<ci::mount::StepCheckMountPath>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<wgt::security::StepDirectManifestSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", true);
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>(
+      "DirectManifestSignature",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
+      true);
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
+      "WgtPatchIcons");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateWgtSymbolicLink");
+  ReplaceStep<ci::filesystem::StepCreateStorageDirectories>(
+      "CreateStorageDirectories",
       wgt::filesystem::WgtAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
 }
 
 void WgtInstaller::ManifestDirectUpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestDirectUpdateSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::mount::StepCheckMountPath>();
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<wgt::security::StepDirectManifestSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", true);
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>(
+      "CheckOldCertificate",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepCopyTep>();
-  AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
+      true);
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
+      "WgtPatchIcons");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CreateWgtSymbolicLink");
 }
 
 void WgtInstaller::ReadonlyUpdateInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::recovery::StepCreateRecoveryFile>();
-  AddStep<ci::filesystem::StepUnzip>();
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ReadonlyUpdateInstallSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
-  AddStep<ci::pkgmgr::StepCheckUpgradable>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepCheckTizenVersion>();
-  AddStep<ci::security::StepSignature>(true);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("CheckOldCertificate",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  AddStep<wgt::security::StepCheckWgtNotificationCategory>();
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<ci::security::StepCheckOldCertificate>();
-  AddStep<wgt::encryption::StepEncryptResources>();
-  AddStep<wgt::filesystem::StepWgtResourceDirectory>();
-  AddStep<ci::security::StepRollbackInstallationSecurity>();
-  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<wgt::filesystem::StepWgtPatchStorageDirectories>();
-  AddStep<ci::filesystem::StepCreateStorageDirectories>();
-  AddStep<wgt::filesystem::StepCreateWgtSymbolicLink>();
-  AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
-  AddStep<wgt::filesystem::StepCopyPreviewIcons>();
-  AddStep<wgt::security::StepCheckExtensionPrivileges>();
-  AddStep<wgt::pkgmgr::StepGenerateXml>();
-  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::StepChangeOwnershipAndPermission>();
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::encryption::StepEncryptResources>("CheckWgtImePrivilege");
+  AddStepAfter<wgt::filesystem::StepWgtResourceDirectory>("EncryptResources");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("CreateIcons", true);
+  AddStepAfter<wgt::filesystem::StepCopyPreviewIcons>("WgtPatchIcons");
+  AddStepAfter<wgt::filesystem::StepCreateWgtSymbolicLink>(
+      "CopyPreviewIcons");
+  AddStepAfter<wgt::security::StepCheckExtensionPrivileges>(
+      "CreateWgtSymbolicLink");
+  AddStepAfter<wgt::pkgmgr::StepGenerateXml>("CheckExtensionPrivileges");
+  AddStepAfter<wgt::filesystem::StepWgtPatchStorageDirectories>(
+      "CreateStorageDirectories");
 }
 
 void WgtInstaller::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>(
+  AppInstaller::ReadonlyUpdateUninstallSteps();
+  AddStepBefore<wgt::configuration::StepSetOldSignatureFilesLocation>(
+      "Signature");
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("Signature",
       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<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);
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
 }
 
 void WgtInstaller::ManifestPartialInstallSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestPartialInstallSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::security::StepSignature>(false);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", false);
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>(
+      "DirectManifestSignature",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  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>("PrivilegeCompatibility");
+  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::WgtAdditionalSharedDirs);
-  AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
 }
 
 void WgtInstaller::ManifestPartialUpdateSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::ManifestPartialUpdateSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::BACKUP);
-  AddStep<ci::security::StepSignature>(false);
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  ReplaceStep<wgt::security::StepDirectManifestSignature>("Signature", false);
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>(
+      "CheckOldCertificate",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
-  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<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
+  AddStepAfter<wgt::filesystem::StepWgtPatchIcons>("RemoveGlobalAppSymlinks",
+      false);
 }
 
 void WgtInstaller::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::filesystem::StepRemoveGlobalAppSymlinks>();
-  AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
-  AddStep<ci::pkgmgr::StepRunParserPlugin>(
-      ci::Plugin::ActionType::Uninstall);
-  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 WgtInstaller::MoveSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::configuration::StepParseManifest>(
-      ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
-      ci::configuration::StepParseManifest::StoreLocation::NORMAL);
-  AddStep<ci::configuration::StepCheckInstallLocation>();
-  AddStep<ci::pkgmgr::StepKillApps>();
-  AddStep<ci::filesystem::StepMoveInstalledStorage>();
-  AddStep<ci::security::StepRegisterSecurity>();
+  AppInstaller::MoveSteps();
 }
 
 void WgtInstaller::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 WgtInstaller::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 WgtInstaller::MigrateExtImgSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<ci::security::StepMigrateLegacyExtImage>();
-  AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
+  AppInstaller::MigrateExtImgSteps();
 }
 
 void WgtInstaller::RecoverDBSteps() {
-  AddStep<ci::configuration::StepConfigure>(pkgmgr_);
-  AddStep<wgt::configuration::StepParse>(
+  AppInstaller::RecoverDBSteps();
+  ReplaceStep<wgt::configuration::StepParse>("ParseManifest",
       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
-  AddStep<ci::pkgmgr::StepCheckInstallable>();
-  AddStep<ci::mount::StepCheckMountPath>();
-  AddStep<ci::configuration::StepParsePreload>();
-  AddStep<ci::security::StepGetPrivilegeLevel>();
-  AddStep<ci::security::StepPrivilegeCompatibility>(
+  AddStepAfter<ci::security::StepPrivilegeCompatibility>("GetPrivilegeLevel",
       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
-  AddStep<wgt::security::StepCheckWgtImePrivilege>();
-  AddStep<wgt::security::StepCheckSettingsLevel>();
-  AddStep<ci::pkgmgr::StepRegisterApplication>();
+  AddStepAfter<wgt::security::StepCheckSettingsLevel>("PrivilegeCompatibility");
+  AddStepAfter<wgt::security::StepCheckWgtBackgroundCategory>(
+      "CheckSettingsLevel");
+  AddStepAfter<wgt::security::StepCheckWgtNotificationCategory>(
+      "CheckWgtBackgroundCategory");
+  AddStepAfter<wgt::security::StepCheckWgtImePrivilege>(
+      "CheckWgtNotificationCategory");
 }
 
 }  // namespace wgt