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