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