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