Add StepWgtPatchIcon at ManifestPartialInstall/Update steps
[platform/core/appfw/wgt-backend.git] / src / hybrid / hybrid_installer.cc
1 // Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
2 // Use of this source code is governed by an apache-2.0 license that can be
3 // found in the LICENSE file.
4
5 #include "hybrid/hybrid_installer.h"
6
7 #include <common/privileges.h>
8 #include <common/step/backup/step_backup_icons.h>
9 #include <common/step/backup/step_backup_manifest.h>
10 #include <common/step/backup/step_copy_backup.h>
11 #include <common/step/configuration/step_block_cross_update.h>
12 #include <common/step/configuration/step_check_tizen_version.h>
13 #include <common/step/configuration/step_configure.h>
14 #include <common/step/configuration/step_fail.h>
15 #include <common/step/configuration/step_parse_manifest.h>
16 #include <common/step/configuration/step_parse_preload.h>
17 #include <common/step/configuration/step_switch_readonly_mode.h>
18 #include <common/step/filesystem/step_acquire_external_storage.h>
19 #include <common/step/filesystem/step_optional_acquire_external_storage.h>
20 #include <common/step/filesystem/step_change_ownership_and_permission.h>
21 #include <common/step/filesystem/step_copy.h>
22 #include <common/step/filesystem/step_copy_storage_directories.h>
23 #include <common/step/filesystem/step_copy_tep.h>
24 #include <common/step/filesystem/step_create_icons.h>
25 #include <common/step/filesystem/step_create_globalapp_symlinks.h>
26 #include <common/step/filesystem/step_create_storage_directories.h>
27 #include <common/step/filesystem/step_delta_patch.h>
28 #include <common/step/filesystem/step_disable_external_mount.h>
29 #include <common/step/filesystem/step_enable_external_mount.h>
30 #include <common/step/filesystem/step_migrate_legacy_external_image.h>
31 #include <common/step/filesystem/step_recover_change_owner.h>
32 #include <common/step/filesystem/step_recover_files.h>
33 #include <common/step/filesystem/step_recover_icons.h>
34 #include <common/step/filesystem/step_recover_manifest.h>
35 #include <common/step/filesystem/step_recover_external_storage.h>
36 #include <common/step/filesystem/step_recover_storage_directories.h>
37 #include <common/step/filesystem/step_remove_files.h>
38 #include <common/step/filesystem/step_remove_icons.h>
39 #include <common/step/filesystem/step_remove_globalapp_symlinks.h>
40 #include <common/step/filesystem/step_remove_per_user_storage_directories.h>
41 #include <common/step/filesystem/step_remove_temporary_directory.h>
42 #include <common/step/filesystem/step_remove_user_data.h>
43 #include <common/step/filesystem/step_remove_zip_image.h>
44 #include <common/step/filesystem/step_remove_tep.h>
45 #include <common/step/filesystem/step_unzip.h>
46 #include <common/step/filesystem/step_update_storage_directories.h>
47 #include <common/step/filesystem/step_update_tep.h>
48 #include <common/step/mount/step_mount_install.h>
49 #include <common/step/mount/step_mount_unpacked.h>
50 #include <common/step/mount/step_mount_recover.h>
51 #include <common/step/mount/step_mount_update.h>
52 #include <common/step/pkgmgr/step_check_force_clean.h>
53 #include <common/step/pkgmgr/step_check_installable.h>
54 #include <common/step/pkgmgr/step_check_removable.h>
55 #include <common/step/pkgmgr/step_check_restriction.h>
56 #include <common/step/pkgmgr/step_check_upgradable.h>
57 #include <common/step/pkgmgr/step_kill_apps.h>
58 #include <common/step/pkgmgr/step_recover_application.h>
59 #include <common/step/pkgmgr/step_recover_parser_plugins.h>
60 #include <common/step/pkgmgr/step_register_app.h>
61 #include <common/step/pkgmgr/step_remove_manifest.h>
62 #include <common/step/pkgmgr/step_run_parser_plugins.h>
63 #include <common/step/pkgmgr/step_unregister_app.h>
64 #include <common/step/pkgmgr/step_update_app.h>
65 #include <common/step/pkgmgr/step_update_pkg_disable_info.h>
66 #include <common/step/recovery/step_open_recovery_file.h>
67 #include <common/step/recovery/step_create_recovery_file.h>
68 #include <common/step/security/step_get_privilege_level.h>
69 #include <common/step/security/step_privacy_privilege.h>
70 #include <common/step/security/step_privilege_compatibility.h>
71 #include <common/step/security/step_recover_privilege_compatibility.h>
72 #include <common/step/security/step_recover_security.h>
73 #include <common/step/security/step_register_security.h>
74 #include <common/step/security/step_revoke_security.h>
75 #include <common/step/security/step_revoke_trust_anchor.h>
76 #include <common/step/security/step_rollback_installation_security.h>
77 #include <common/step/security/step_signature.h>
78 #include <common/step/security/step_update_security.h>
79 #include <common/step/security/step_register_trust_anchor.h>
80 #include <common/step/security/step_unregister_trust_anchor.h>
81
82 #include <tpk/step/filesystem/step_create_symbolic_link.h>
83 #include <tpk/step/filesystem/step_tpk_patch_icons.h>
84 #include <tpk/step/filesystem/step_tpk_prepare_package_directory.h>
85 #include <tpk/step/filesystem/step_tpk_update_package_directory.h>
86 #include <tpk/step/pkgmgr/step_manifest_adjustment.h>
87 #include <tpk/step/security/step_tpk_recover_signature.h>
88
89 #include "hybrid/hybrid_backend_data.h"
90 #include "hybrid/shared_dirs.h"
91 #include "hybrid/step/configuration/step_merge_tpk_config.h"
92 #include "hybrid/step/configuration/step_merge_tpk_privileges.h"
93 #include "hybrid/step/configuration/step_stash_tpk_config.h"
94 #include "hybrid/step/encryption/step_encrypt_resources.h"
95 #include "hybrid/step/pkgmgr/step_merge_xml.h"
96 #include "wgt/step/configuration/step_parse.h"
97 #include "wgt/step/configuration/step_set_old_signature_files_location.h"
98 #include "wgt/step/encryption/step_remove_encryption_data.h"
99 #include "wgt/step/filesystem/step_copy_preview_icons.h"
100 #include "wgt/step/filesystem/step_create_symbolic_link.h"
101 #include "wgt/step/filesystem/step_wgt_patch_icons.h"
102 #include "wgt/step/filesystem/step_wgt_patch_storage_directories.h"
103 #include "wgt/step/filesystem/step_wgt_undo_patch_storage_directories.h"
104 #include "wgt/step/pkgmgr/step_generate_xml.h"
105 #include "wgt/step/security/step_check_settings_level.h"
106 #include "wgt/step/security/step_check_wgt_background_category.h"
107 #include "wgt/step/security/step_check_wgt_notification_category.h"
108 #include "wgt/step/security/step_check_wgt_ime_privilege.h"
109
110 namespace ci = common_installer;
111
112 namespace hybrid {
113
114 HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr)
115     : AppInstaller("wgt", pkgmgr) {
116   context_->cross_app_rules.set(true);
117   context_->backend_data.set(new HybridBackendData());
118 }
119
120 void HybridInstaller::InstallSteps() {
121   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
122   AddStep<ci::recovery::StepCreateRecoveryFile>();
123   AddStep<ci::filesystem::StepUnzip>();
124   AddStep<ci::configuration::StepParseManifest>(
125       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
126       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
127   AddStep<ci::pkgmgr::StepCheckInstallable>();
128   AddStep<hybrid::configuration::StepStashTpkConfig>();
129   AddStep<wgt::configuration::StepParse>(
130       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
131   AddStep<ci::configuration::StepParsePreload>();
132   AddStep<ci::pkgmgr::StepCheckRestriction>();
133   AddStep<ci::configuration::StepCheckTizenVersion>();
134   AddStep<ci::security::StepSignature>(true);
135   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
136   AddStep<ci::security::StepPrivilegeCompatibility>(
137       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
138   AddStep<wgt::security::StepCheckSettingsLevel>();
139   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
140   AddStep<wgt::security::StepCheckWgtNotificationCategory>();
141   AddStep<wgt::security::StepCheckWgtImePrivilege>();
142   AddStep<hybrid::encryption::StepEncryptResources>();
143   AddStep<ci::security::StepRollbackInstallationSecurity>();
144   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
145   AddStep<ci::filesystem::StepAcquireExternalStorage>(false);
146   AddStep<ci::filesystem::StepCopy>();
147   AddStep<ci::filesystem::StepCopyTep>();
148   AddStep<tpk::filesystem::StepTpkPatchIcons>();
149   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
150   AddStep<ci::filesystem::StepCreateIcons>();
151   AddStep<wgt::filesystem::StepCopyPreviewIcons>();
152   AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
153   AddStep<wgt::pkgmgr::StepGenerateXml>();
154   AddStep<hybrid::pkgmgr::StepMergeXml>();
155   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
156   AddStep<hybrid::configuration::StepMergeTpkConfig>(
157       hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
158   AddStep<wgt::filesystem::StepCreateSymbolicLink>();
159   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
160   AddStep<ci::pkgmgr::StepRegisterApplication>();
161   AddStep<ci::security::StepRegisterTrustAnchor>(
162       ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
163   AddStep<ci::security::StepPrivacyPrivilege>(
164       ci::security::StepPrivacyPrivilege::ActionType::Install);
165   AddStep<ci::security::StepRegisterSecurity>();
166   AddStep<ci::pkgmgr::StepRunParserPlugin>(
167       ci::Plugin::ActionType::Install);
168   AddStep<ci::filesystem::StepCreateStorageDirectories>(
169       wgt::filesystem::HybridAdditionalSharedDirs);
170   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
171   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
172 }
173
174 void HybridInstaller::UpdateSteps() {
175   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
176   AddStep<ci::recovery::StepCreateRecoveryFile>();
177   AddStep<ci::filesystem::StepUnzip>();
178   AddStep<ci::configuration::StepParseManifest>(
179       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
180       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
181   AddStep<ci::pkgmgr::StepCheckUpgradable>();
182   AddStep<hybrid::configuration::StepStashTpkConfig>();
183   AddStep<wgt::configuration::StepParse>(
184       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
185   AddStep<ci::configuration::StepParsePreload>();
186   AddStep<ci::configuration::StepCheckTizenVersion>();
187   AddStep<ci::security::StepSignature>(true);
188   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
189   AddStep<ci::security::StepPrivilegeCompatibility>(
190       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
191   AddStep<wgt::security::StepCheckSettingsLevel>();
192   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
193   AddStep<wgt::security::StepCheckWgtNotificationCategory>();
194   AddStep<wgt::security::StepCheckWgtImePrivilege>();
195   AddStep<hybrid::encryption::StepEncryptResources>();
196   AddStep<ci::configuration::StepParseManifest>(
197       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
198       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
199   AddStep<ci::configuration::StepBlockCrossUpdate>();
200   AddStep<ci::pkgmgr::StepKillApps>();
201   AddStep<ci::backup::StepBackupManifest>();
202   AddStep<ci::backup::StepBackupIcons>();
203   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
204   AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
205   AddStep<ci::backup::StepCopyBackup>();
206   AddStep<ci::filesystem::StepUpdateTep>();
207   AddStep<tpk::filesystem::StepTpkPatchIcons>();
208   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
209   AddStep<ci::filesystem::StepCreateIcons>();
210   AddStep<wgt::filesystem::StepCopyPreviewIcons>();
211   AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
212   AddStep<ci::filesystem::StepCopyStorageDirectories>();
213   AddStep<wgt::pkgmgr::StepGenerateXml>();
214   AddStep<hybrid::pkgmgr::StepMergeXml>();
215   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
216   AddStep<hybrid::configuration::StepMergeTpkConfig>(
217       hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
218   AddStep<wgt::filesystem::StepCreateSymbolicLink>();
219   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
220   AddStep<ci::pkgmgr::StepUpdateApplication>();
221   AddStep<ci::security::StepRegisterTrustAnchor>(
222       ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
223   AddStep<ci::security::StepPrivacyPrivilege>(
224       ci::security::StepPrivacyPrivilege::ActionType::Update);
225   AddStep<ci::security::StepUpdateSecurity>();
226   AddStep<ci::pkgmgr::StepRunParserPlugin>(
227       ci::Plugin::ActionType::Upgrade);
228   AddStep<ci::filesystem::StepUpdateStorageDirectories>();
229   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
230   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
231 }
232
233 void HybridInstaller::UninstallSteps() {
234   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
235   AddStep<ci::pkgmgr::StepCheckRestriction>();
236   AddStep<ci::pkgmgr::StepCheckRemovable>();
237   AddStep<ci::pkgmgr::StepCheckForceClean>();
238   AddStep<ci::configuration::StepParseManifest>(
239       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
240       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
241   AddStep<ci::pkgmgr::StepKillApps>();
242   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
243   AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
244   AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>();
245   AddStep<ci::pkgmgr::StepUnregisterApplication>();
246   AddStep<ci::filesystem::StepRemoveTep>();
247   AddStep<ci::filesystem::StepRemoveFiles>();
248   AddStep<ci::filesystem::StepRemoveZipImage>();
249   AddStep<ci::filesystem::StepRemoveIcons>();
250   AddStep<wgt::encryption::StepRemoveEncryptionData>();
251   AddStep<ci::security::StepUnregisterTrustAnchor>();
252   AddStep<ci::security::StepPrivacyPrivilege>(
253       ci::security::StepPrivacyPrivilege::ActionType::Uninstall);
254   AddStep<ci::security::StepRevokeSecurity>();
255   AddStep<ci::pkgmgr::StepRemoveManifest>();
256   AddStep<ci::pkgmgr::StepRunParserPlugin>(
257       ci::Plugin::ActionType::Uninstall);
258   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
259 }
260
261 void HybridInstaller::ReinstallSteps() {
262   // RDS is not supported for hybrid apps
263   AddStep<ci::configuration::StepFail>();
264 }
265
266 void HybridInstaller::DeltaSteps() {
267   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
268   AddStep<ci::recovery::StepCreateRecoveryFile>();
269   AddStep<ci::filesystem::StepUnzip>();
270   AddStep<ci::configuration::StepParseManifest>(
271       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
272       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
273   AddStep<ci::pkgmgr::StepCheckUpgradable>();
274   AddStep<wgt::filesystem::StepWgtUndoPatchStorageDirectories>();
275   AddStep<hybrid::configuration::StepStashTpkConfig>();
276   AddStep<ci::configuration::StepParseManifest>(
277       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
278       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
279   AddStep<ci::filesystem::StepEnableExternalMount>();
280   AddStep<ci::filesystem::StepDeltaPatch>();
281   AddStep<ci::filesystem::StepDisableExternalMount>();
282   AddStep<wgt::configuration::StepParse>(
283       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
284   AddStep<ci::configuration::StepParsePreload>();
285   AddStep<ci::configuration::StepCheckTizenVersion>();
286   AddStep<ci::security::StepSignature>(true);
287   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
288   AddStep<ci::security::StepPrivilegeCompatibility>(
289       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
290   AddStep<wgt::security::StepCheckSettingsLevel>();
291   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
292   AddStep<wgt::security::StepCheckWgtNotificationCategory>();
293   AddStep<wgt::security::StepCheckWgtImePrivilege>();
294   AddStep<hybrid::encryption::StepEncryptResources>();
295   AddStep<ci::configuration::StepBlockCrossUpdate>();
296   AddStep<ci::pkgmgr::StepKillApps>();
297   AddStep<ci::backup::StepBackupManifest>();
298   AddStep<ci::backup::StepBackupIcons>();
299   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
300   AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
301   AddStep<ci::backup::StepCopyBackup>();
302   AddStep<ci::filesystem::StepUpdateTep>();
303   AddStep<tpk::filesystem::StepTpkPatchIcons>();
304   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
305   AddStep<ci::filesystem::StepCreateIcons>();
306   AddStep<wgt::filesystem::StepCopyPreviewIcons>();
307   AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
308   AddStep<ci::filesystem::StepCopyStorageDirectories>();
309   AddStep<wgt::pkgmgr::StepGenerateXml>();
310   AddStep<hybrid::pkgmgr::StepMergeXml>();
311   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
312   AddStep<hybrid::configuration::StepMergeTpkConfig>(
313       hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
314   AddStep<wgt::filesystem::StepCreateSymbolicLink>();
315   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
316   AddStep<ci::security::StepRegisterTrustAnchor>(
317       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
318   AddStep<ci::security::StepPrivacyPrivilege>(
319       ci::security::StepPrivacyPrivilege::ActionType::Update);
320   AddStep<ci::pkgmgr::StepUpdateApplication>();
321   AddStep<ci::security::StepUpdateSecurity>();
322   AddStep<ci::pkgmgr::StepRunParserPlugin>(
323       ci::Plugin::ActionType::Upgrade);
324   AddStep<ci::filesystem::StepUpdateStorageDirectories>();
325   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
326   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
327 }
328
329 void HybridInstaller::RecoverySteps() {
330   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
331   AddStep<ci::recovery::StepOpenRecoveryFile>();
332   AddStep<ci::configuration::StepParseManifest>(
333       ci::configuration::StepParseManifest::ManifestLocation::RECOVERY,
334       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
335   AddStep<ci::filesystem::StepRemoveTemporaryDirectory>();
336   AddStep<ci::filesystem::StepRecoverIcons>();
337   AddStep<ci::pkgmgr::StepRecoverParserPlugin>();
338   AddStep<ci::filesystem::StepRecoverManifest>();
339   AddStep<ci::filesystem::StepRecoverExternalStorage>();
340   AddStep<ci::filesystem::StepRecoverStorageDirectories>();
341   AddStep<ci::filesystem::StepRecoverFiles>();
342   AddStep<ci::mount::StepMountRecover>();
343   AddStep<tpk::security::StepTpkRecoverSignature>();
344   AddStep<ci::security::StepRecoverPrivilegeCompatibility>(
345       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
346   AddStep<ci::filesystem::StepRecoverChangeOwner>();
347   AddStep<ci::security::StepRecoverSecurity>();
348   AddStep<ci::pkgmgr::StepRecoverApplication>();
349 }
350
351 void HybridInstaller::MountInstallSteps() {
352   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
353   AddStep<ci::recovery::StepCreateRecoveryFile>();
354   AddStep<ci::mount::StepMountUnpacked>();
355   AddStep<ci::configuration::StepParseManifest>(
356       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
357       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
358   AddStep<ci::pkgmgr::StepCheckInstallable>();
359   AddStep<hybrid::configuration::StepStashTpkConfig>();
360   AddStep<wgt::configuration::StepParse>(
361       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
362   AddStep<ci::configuration::StepParsePreload>();
363   AddStep<ci::pkgmgr::StepCheckRestriction>();
364   AddStep<ci::configuration::StepCheckTizenVersion>();
365   AddStep<ci::security::StepSignature>(true);
366   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
367   AddStep<ci::security::StepPrivilegeCompatibility>(
368       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
369   AddStep<wgt::security::StepCheckSettingsLevel>();
370   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
371   AddStep<wgt::security::StepCheckWgtNotificationCategory>();
372   AddStep<wgt::security::StepCheckWgtImePrivilege>();
373   AddStep<hybrid::encryption::StepEncryptResources>();
374   AddStep<ci::security::StepRollbackInstallationSecurity>();
375   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
376   AddStep<ci::mount::StepMountInstall>();
377   AddStep<tpk::filesystem::StepTpkPreparePackageDirectory>();
378   AddStep<ci::filesystem::StepCopyTep>();
379   AddStep<tpk::filesystem::StepTpkPatchIcons>();
380   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
381   AddStep<ci::filesystem::StepCreateIcons>();
382   AddStep<wgt::filesystem::StepCopyPreviewIcons>();
383   AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
384   AddStep<wgt::pkgmgr::StepGenerateXml>();
385   AddStep<hybrid::pkgmgr::StepMergeXml>();
386   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
387   AddStep<hybrid::configuration::StepMergeTpkConfig>(
388       hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
389   AddStep<wgt::filesystem::StepCreateSymbolicLink>();
390   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
391   AddStep<ci::pkgmgr::StepRegisterApplication>();
392   AddStep<ci::security::StepRegisterTrustAnchor>(
393       ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
394   AddStep<ci::security::StepPrivacyPrivilege>(
395       ci::security::StepPrivacyPrivilege::ActionType::Install);
396   AddStep<ci::security::StepRegisterSecurity>();
397   AddStep<ci::pkgmgr::StepRunParserPlugin>(
398       ci::Plugin::ActionType::Install);
399   AddStep<ci::filesystem::StepCreateStorageDirectories>(
400       wgt::filesystem::HybridAdditionalSharedDirs);
401   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
402   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
403 }
404
405 void HybridInstaller::MountUpdateSteps() {
406   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
407   AddStep<ci::recovery::StepCreateRecoveryFile>();
408   AddStep<ci::mount::StepMountUnpacked>();
409   AddStep<ci::configuration::StepParseManifest>(
410       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
411       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
412   AddStep<ci::pkgmgr::StepCheckUpgradable>();
413   AddStep<hybrid::configuration::StepStashTpkConfig>();
414   AddStep<wgt::configuration::StepParse>(
415       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
416   AddStep<ci::configuration::StepParsePreload>();
417   AddStep<ci::configuration::StepCheckTizenVersion>();
418   AddStep<ci::security::StepSignature>(true);
419   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
420   AddStep<ci::security::StepPrivilegeCompatibility>(
421       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
422   AddStep<wgt::security::StepCheckSettingsLevel>();
423   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
424   AddStep<wgt::security::StepCheckWgtNotificationCategory>();
425   AddStep<wgt::security::StepCheckWgtImePrivilege>();
426   AddStep<hybrid::encryption::StepEncryptResources>();
427   AddStep<ci::configuration::StepParseManifest>(
428       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
429       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
430   AddStep<ci::configuration::StepBlockCrossUpdate>();
431   AddStep<ci::pkgmgr::StepKillApps>();
432   AddStep<ci::backup::StepBackupManifest>();
433   AddStep<ci::backup::StepBackupIcons>();
434   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
435   AddStep<ci::mount::StepMountUpdate>();
436   AddStep<tpk::filesystem::StepTpkUpdatePackageDirectory>();
437   AddStep<ci::filesystem::StepUpdateTep>();
438   AddStep<tpk::filesystem::StepTpkPatchIcons>();
439   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
440   AddStep<ci::filesystem::StepCreateIcons>();
441   AddStep<wgt::filesystem::StepCopyPreviewIcons>();
442   AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
443   AddStep<wgt::pkgmgr::StepGenerateXml>();
444   AddStep<hybrid::pkgmgr::StepMergeXml>();
445   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
446   AddStep<hybrid::configuration::StepMergeTpkConfig>(
447       hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
448   AddStep<wgt::filesystem::StepCreateSymbolicLink>();
449   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
450   AddStep<ci::pkgmgr::StepUpdateApplication>();
451   AddStep<ci::security::StepRegisterTrustAnchor>(
452       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
453   AddStep<ci::security::StepPrivacyPrivilege>(
454       ci::security::StepPrivacyPrivilege::ActionType::Update);
455   AddStep<ci::security::StepUpdateSecurity>();
456   AddStep<ci::pkgmgr::StepRunParserPlugin>(
457       ci::Plugin::ActionType::Upgrade);
458   AddStep<ci::filesystem::StepUpdateStorageDirectories>();
459   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
460   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
461 }
462
463 void HybridInstaller::ManifestDirectInstallSteps() {
464   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
465   AddStep<ci::configuration::StepParseManifest>(
466       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
467       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
468   AddStep<ci::pkgmgr::StepCheckInstallable>();
469   AddStep<hybrid::configuration::StepStashTpkConfig>();
470   AddStep<wgt::configuration::StepParse>(
471       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
472   AddStep<ci::configuration::StepParsePreload>();
473   AddStep<ci::configuration::StepCheckTizenVersion>();
474   AddStep<ci::security::StepSignature>(true);
475   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
476   AddStep<ci::security::StepPrivilegeCompatibility>(
477       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
478   AddStep<wgt::security::StepCheckSettingsLevel>();
479   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
480   AddStep<ci::security::StepRollbackInstallationSecurity>();
481   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
482   AddStep<tpk::filesystem::StepTpkPatchIcons>();
483   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
484   AddStep<wgt::pkgmgr::StepGenerateXml>();
485   AddStep<hybrid::pkgmgr::StepMergeXml>();
486   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
487   AddStep<hybrid::configuration::StepMergeTpkConfig>(
488       hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
489   AddStep<ci::pkgmgr::StepRegisterApplication>();
490   AddStep<ci::security::StepRegisterTrustAnchor>(
491       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
492   AddStep<ci::security::StepPrivacyPrivilege>(
493       ci::security::StepPrivacyPrivilege::ActionType::Install);
494   AddStep<ci::security::StepRegisterSecurity>();
495   AddStep<ci::pkgmgr::StepRunParserPlugin>(
496       ci::Plugin::ActionType::Install);
497   AddStep<ci::filesystem::StepCreateStorageDirectories>(
498       wgt::filesystem::HybridAdditionalSharedDirs);
499   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
500   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
501 }
502
503 void HybridInstaller::ManifestDirectUpdateSteps() {
504   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
505   AddStep<ci::configuration::StepParseManifest>(
506       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
507       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
508   AddStep<ci::pkgmgr::StepCheckUpgradable>();
509   AddStep<hybrid::configuration::StepStashTpkConfig>();
510   AddStep<wgt::configuration::StepParse>(
511       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
512   AddStep<ci::configuration::StepParsePreload>();
513   AddStep<ci::configuration::StepCheckTizenVersion>();
514   AddStep<ci::security::StepSignature>(true);
515   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
516   AddStep<ci::security::StepPrivilegeCompatibility>(
517       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
518   AddStep<wgt::security::StepCheckSettingsLevel>();
519   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
520   AddStep<ci::configuration::StepParseManifest>(
521       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
522       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
523   AddStep<ci::pkgmgr::StepKillApps>();
524   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
525   AddStep<tpk::filesystem::StepTpkPatchIcons>();
526   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
527   AddStep<wgt::pkgmgr::StepGenerateXml>();
528   AddStep<hybrid::pkgmgr::StepMergeXml>();
529   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
530   AddStep<hybrid::configuration::StepMergeTpkConfig>(
531       hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
532   AddStep<ci::pkgmgr::StepUpdateApplication>();
533   AddStep<ci::security::StepRegisterTrustAnchor>(
534       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
535   AddStep<ci::security::StepPrivacyPrivilege>(
536       ci::security::StepPrivacyPrivilege::ActionType::Update);
537   AddStep<ci::security::StepUpdateSecurity>();
538   AddStep<ci::pkgmgr::StepRunParserPlugin>(
539       ci::Plugin::ActionType::Upgrade);
540   AddStep<ci::filesystem::StepUpdateStorageDirectories>();
541   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
542   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
543 }
544
545 void HybridInstaller::ManifestPartialInstallSteps() {
546   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
547   AddStep<ci::configuration::StepParseManifest>(
548       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
549       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
550   AddStep<hybrid::configuration::StepStashTpkConfig>();
551   AddStep<wgt::configuration::StepParse>(
552       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
553   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
554   AddStep<hybrid::configuration::StepMergeTpkConfig>(
555       hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
556   AddStep<ci::configuration::StepParsePreload>();
557   AddStep<ci::security::StepSignature>(false);
558   AddStep<ci::security::StepPrivilegeCompatibility>(
559       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
560   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
561   AddStep<wgt::filesystem::StepWgtPatchIcons>(false);
562   AddStep<ci::pkgmgr::StepRegisterApplication>();
563   AddStep<ci::security::StepRegisterTrustAnchor>(
564       ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
565   AddStep<ci::security::StepPrivacyPrivilege>(
566       ci::security::StepPrivacyPrivilege::ActionType::Install);
567   AddStep<ci::security::StepRegisterSecurity>();
568   AddStep<ci::pkgmgr::StepRunParserPlugin>(
569       ci::Plugin::ActionType::Install);
570   AddStep<ci::filesystem::StepCreateStorageDirectories>(
571       wgt::filesystem::HybridAdditionalSharedDirs);
572   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
573 }
574
575 void HybridInstaller::ManifestPartialUpdateSteps() {
576   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
577   AddStep<ci::configuration::StepParseManifest>(
578       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
579       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
580   AddStep<hybrid::configuration::StepStashTpkConfig>();
581   AddStep<wgt::configuration::StepParse>(
582       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
583   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
584   AddStep<hybrid::configuration::StepMergeTpkConfig>(
585       hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
586   AddStep<ci::configuration::StepParsePreload>();
587   AddStep<ci::security::StepSignature>(false);
588   AddStep<ci::configuration::StepParseManifest>(
589       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
590       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
591   AddStep<ci::security::StepPrivilegeCompatibility>(
592       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
593   AddStep<ci::pkgmgr::StepKillApps>();
594   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
595   AddStep<wgt::filesystem::StepWgtPatchIcons>(false);
596   AddStep<ci::pkgmgr::StepUpdateApplication>();
597   AddStep<ci::security::StepRegisterTrustAnchor>(
598       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
599   AddStep<ci::security::StepPrivacyPrivilege>(
600       ci::security::StepPrivacyPrivilege::ActionType::Update);
601   AddStep<ci::security::StepRegisterSecurity>();
602   AddStep<ci::pkgmgr::StepRunParserPlugin>(
603       ci::Plugin::ActionType::Upgrade);
604   AddStep<ci::filesystem::StepUpdateStorageDirectories>();
605   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
606 }
607
608 void HybridInstaller::PartialUninstallSteps() {
609   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
610   AddStep<ci::pkgmgr::StepCheckRestriction>();
611   AddStep<ci::pkgmgr::StepCheckRemovable>();
612   AddStep<ci::pkgmgr::StepCheckForceClean>();
613   AddStep<ci::configuration::StepParseManifest>(
614       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
615       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
616   AddStep<ci::pkgmgr::StepRunParserPlugin>(
617       ci::Plugin::ActionType::Uninstall);
618   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
619   AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
620   AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>();
621   AddStep<ci::pkgmgr::StepUnregisterApplication>();
622   AddStep<wgt::encryption::StepRemoveEncryptionData>();
623   AddStep<ci::security::StepUnregisterTrustAnchor>();
624   AddStep<ci::security::StepPrivacyPrivilege>(
625       ci::security::StepPrivacyPrivilege::ActionType::Uninstall);
626   AddStep<ci::security::StepRevokeSecurity>();
627 }
628
629 void HybridInstaller::ReadonlyUpdateInstallSteps() {
630   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
631   AddStep<ci::recovery::StepCreateRecoveryFile>();
632   AddStep<ci::filesystem::StepUnzip>();
633   AddStep<ci::configuration::StepParseManifest>(
634       ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
635       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
636   AddStep<ci::pkgmgr::StepCheckUpgradable>();
637   AddStep<hybrid::configuration::StepStashTpkConfig>();
638   AddStep<wgt::configuration::StepParse>(
639       wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, true);
640   AddStep<ci::configuration::StepParsePreload>();
641   AddStep<ci::configuration::StepCheckTizenVersion>();
642   AddStep<ci::security::StepSignature>(true);
643   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
644   AddStep<ci::security::StepPrivilegeCompatibility>(
645       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
646   AddStep<wgt::security::StepCheckSettingsLevel>();
647   AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
648   AddStep<wgt::security::StepCheckWgtNotificationCategory>();
649   AddStep<wgt::security::StepCheckWgtImePrivilege>();
650   AddStep<hybrid::encryption::StepEncryptResources>();
651   AddStep<ci::configuration::StepSwitchReadonlyMode>();
652   AddStep<ci::configuration::StepParseManifest>(
653       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
654       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
655   AddStep<ci::configuration::StepSwitchReadonlyMode>();
656   AddStep<ci::configuration::StepBlockCrossUpdate>();
657   AddStep<ci::pkgmgr::StepKillApps>();
658   AddStep<ci::filesystem::StepCopy>();
659   AddStep<ci::filesystem::StepCopyTep>();
660   AddStep<tpk::filesystem::StepTpkPatchIcons>();
661   AddStep<wgt::filesystem::StepWgtPatchIcons>(true);
662   AddStep<ci::filesystem::StepCreateIcons>();
663   AddStep<wgt::filesystem::StepCopyPreviewIcons>();
664   AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
665   AddStep<ci::filesystem::StepCreateStorageDirectories>();
666   AddStep<wgt::pkgmgr::StepGenerateXml>();
667   AddStep<hybrid::pkgmgr::StepMergeXml>();
668   AddStep<tpk::pkgmgr::StepManifestAdjustment>();
669   AddStep<hybrid::configuration::StepMergeTpkConfig>(
670       hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
671   AddStep<wgt::filesystem::StepCreateSymbolicLink>();
672   AddStep<tpk::filesystem::StepCreateSymbolicLink>();
673   AddStep<ci::pkgmgr::StepUpdateApplication>();
674   AddStep<ci::security::StepRegisterTrustAnchor>(
675       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
676   AddStep<ci::security::StepPrivacyPrivilege>(
677       ci::security::StepPrivacyPrivilege::ActionType::Update);
678   AddStep<ci::security::StepUpdateSecurity>();
679   AddStep<ci::pkgmgr::StepRunParserPlugin>(
680       ci::Plugin::ActionType::Upgrade);
681   AddStep<ci::filesystem::StepUpdateStorageDirectories>();
682   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
683   AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
684 }
685
686 void HybridInstaller::ReadonlyUpdateUninstallSteps() {
687   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
688   AddStep<ci::pkgmgr::StepCheckRestriction>();
689   AddStep<ci::pkgmgr::StepCheckRemovable>();
690   AddStep<ci::configuration::StepParseManifest>(
691       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
692       ci::configuration::StepParseManifest::StoreLocation::BACKUP);
693   AddStep<ci::configuration::StepSwitchReadonlyMode>();
694   AddStep<ci::configuration::StepParseManifest>(
695       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
696       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
697   AddStep<ci::pkgmgr::StepCheckUpgradable>();
698   AddStep<ci::configuration::StepParsePreload>();
699   AddStep<wgt::configuration::StepSetOldSignatureFilesLocation>();
700   AddStep<ci::security::StepSignature>(false);
701   AddStep<ci::security::StepPrivilegeCompatibility>(
702       ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
703   AddStep<ci::configuration::StepSwitchReadonlyMode>();
704   AddStep<ci::pkgmgr::StepKillApps>();
705   AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
706   AddStep<ci::filesystem::StepRemoveTep>();
707   AddStep<ci::filesystem::StepRemoveFiles>();
708   AddStep<ci::filesystem::StepRemoveZipImage>();
709   AddStep<ci::pkgmgr::StepUpdateApplication>();
710   AddStep<ci::filesystem::StepRemoveUserData>();
711   AddStep<ci::configuration::StepSwitchReadonlyMode>();
712   AddStep<ci::security::StepRevokeTrustAnchor>();
713   AddStep<ci::security::StepRegisterTrustAnchor>(
714       ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
715   AddStep<ci::security::StepPrivacyPrivilege>(
716       ci::security::StepPrivacyPrivilege::ActionType::Update);
717   AddStep<ci::security::StepUpdateSecurity>();
718   AddStep<ci::pkgmgr::StepRemoveManifest>();
719   AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Upgrade);
720 }
721
722 void HybridInstaller::EnablePkgSteps() {
723   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
724   AddStep<ci::configuration::StepParseManifest>(
725       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
726       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
727   AddStep<ci::pkgmgr::StepKillApps>();
728   AddStep<ci::pkgmgr::StepUpdatePkgDisableInfo>(
729       ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable);
730   AddStep<ci::pkgmgr::StepRunParserPlugin>(
731       ci::Plugin::ActionType::Install);
732 }
733
734 void HybridInstaller::DisablePkgSteps() {
735   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
736   AddStep<ci::configuration::StepParseManifest>(
737       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
738       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
739   AddStep<ci::pkgmgr::StepKillApps>();
740   AddStep<ci::pkgmgr::StepUpdatePkgDisableInfo>(
741       ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable);
742   AddStep<ci::pkgmgr::StepRunParserPlugin>(
743       ci::Plugin::ActionType::Uninstall);
744 }
745
746 void HybridInstaller::MigrateExtImgSteps() {
747   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
748   AddStep<ci::security::StepMigrateLegacyExtImage>();
749   AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
750 }
751
752 void HybridInstaller::RecoverDBSteps() {
753   AddStep<ci::configuration::StepConfigure>(pkgmgr_);
754   AddStep<ci::configuration::StepParseManifest>(
755       ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
756       ci::configuration::StepParseManifest::StoreLocation::NORMAL);
757   AddStep<ci::pkgmgr::StepCheckInstallable>();
758   AddStep<hybrid::configuration::StepStashTpkConfig>();
759   AddStep<wgt::configuration::StepParse>(
760       wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
761   AddStep<ci::configuration::StepParsePreload>();
762   AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
763   AddStep<ci::security::StepGetPrivilegeLevel>();
764   AddStep<ci::security::StepPrivilegeCompatibility>(
765       ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
766   AddStep<wgt::security::StepCheckSettingsLevel>();
767   AddStep<hybrid::configuration::StepMergeTpkConfig>(
768       hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
769   AddStep<ci::pkgmgr::StepRegisterApplication>();
770 }
771
772 }  // namespace hybrid
773