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