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.
5 #include "wgt/wgt_installer.h"
7 #include <common/pkgmgr_interface.h>
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_zip_image.h>
51 #include <common/step/filesystem/step_unzip.h>
52 #include <common/step/filesystem/step_update_per_user_storage_directories.h>
53 #include <common/step/filesystem/step_update_storage_directories.h>
54 #include <common/step/filesystem/step_update_tep.h>
55 #include <common/step/mount/step_mount_install.h>
56 #include <common/step/mount/step_mount_recover.h>
57 #include <common/step/mount/step_mount_unpacked.h>
58 #include <common/step/mount/step_mount_update.h>
59 #include <common/step/pkgmgr/step_check_force_clean.h>
60 #include <common/step/pkgmgr/step_check_installable.h>
61 #include <common/step/pkgmgr/step_check_removable.h>
62 #include <common/step/pkgmgr/step_check_restriction.h>
63 #include <common/step/pkgmgr/step_kill_apps.h>
64 #include <common/step/pkgmgr/step_recover_application.h>
65 #include <common/step/pkgmgr/step_register_app.h>
66 #include <common/step/pkgmgr/step_remove_manifest.h>
67 #include <common/step/pkgmgr/step_run_parser_plugins.h>
68 #include <common/step/pkgmgr/step_unregister_app.h>
69 #include <common/step/pkgmgr/step_update_app.h>
70 #include <common/step/pkgmgr/step_update_pkg_disable_info.h>
71 #include <common/step/rds/step_rds_modify.h>
72 #include <common/step/rds/step_rds_parse.h>
73 #include <common/step/recovery/step_open_recovery_file.h>
74 #include <common/step/security/step_check_old_certificate.h>
75 #include <common/step/security/step_check_signature.h>
76 #include <common/step/security/step_privacy_privilege.h>
77 #include <common/step/security/step_privilege_compatibility.h>
78 #include <common/step/security/step_recover_privilege_compatibility.h>
79 #include <common/step/security/step_recover_security.h>
80 #include <common/step/security/step_recover_trust_anchor.h>
81 #include <common/step/security/step_register_security.h>
82 #include <common/step/security/step_revoke_security.h>
83 #include <common/step/security/step_rollback_installation_security.h>
84 #include <common/step/security/step_update_security.h>
85 #include <common/step/security/step_register_trust_anchor.h>
86 #include <common/step/security/step_revoke_trust_anchor.h>
87 #include <common/step/security/step_save_signature.h>
88 #include <common/step/security/step_unregister_trust_anchor.h>
90 #include <wgt_manifest_handlers/widget_config_parser.h>
92 #include "wgt/shared_dirs.h"
93 #include "wgt/step/configuration/step_check_rds_manifest.h"
94 #include "wgt/step/configuration/step_check_start_files.h"
95 #include "wgt/step/configuration/step_parse.h"
96 #include "wgt/step/configuration/step_set_old_signature_files_location.h"
97 #include "wgt/step/encryption/step_encrypt_resources.h"
98 #include "wgt/step/encryption/step_remove_encryption_data.h"
99 #include "wgt/step/filesystem/step_copy_preview_icons.h"
100 #include "wgt/step/filesystem/step_create_symbolic_link.h"
101 #include "wgt/step/filesystem/step_wgt_patch_icons.h"
102 #include "wgt/step/filesystem/step_wgt_patch_storage_directories.h"
103 #include "wgt/step/filesystem/step_wgt_prepare_package_directory.h"
104 #include "wgt/step/filesystem/step_wgt_resource_directory.h"
105 #include "wgt/step/filesystem/step_wgt_undo_patch_storage_directories.h"
106 #include "wgt/step/filesystem/step_wgt_update_package_directory.h"
107 #include "wgt/step/pkgmgr/step_generate_xml.h"
108 #include "wgt/step/security/step_add_default_privileges.h"
109 #include "wgt/step/security/step_check_settings_level.h"
110 #include "wgt/step/security/step_check_wgt_background_category.h"
111 #include "wgt/step/security/step_check_wgt_notification_category.h"
112 #include "wgt/step/security/step_check_wgt_ime_privilege.h"
113 #include "wgt/step/security/step_direct_manifest_check_signature.h"
114 #include "wgt/step/security/step_check_extension_privileges.h"
115 #include "wgt/step/security/step_wgt_recover_signature.h"
117 namespace ci = common_installer;
121 WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr)
122 : AppInstaller("wgt", pkgrmgr) {
123 context_->backend_data.set(new WgtBackendData());
125 /* treat the request */
126 switch (pkgmgr_->GetRequestType()) {
127 case ci::RequestType::Install : {
131 case ci::RequestType::Update: {
135 case ci::RequestType::Uninstall: {
139 case ci::RequestType::Reinstall: {
143 case ci::RequestType::Delta: {
147 case ci::RequestType::Recovery: {
151 case ci::RequestType::MountInstall: {
155 case ci::RequestType::MountUpdate: {
159 case ci::RequestType::ManifestDirectInstall: {
160 ManifestDirectInstallSteps();
163 case ci::RequestType::ManifestDirectUpdate: {
164 ManifestDirectUpdateSteps();
167 case ci::RequestType::ReadonlyUpdateInstall: {
168 ReadonlyUpdateInstallSteps();
171 case ci::RequestType::ReadonlyUpdateUninstall: {
172 ReadonlyUpdateUninstallSteps();
175 case ci::RequestType::ManifestPartialInstall: {
176 ManifestPartialInstallSteps();
179 case ci::RequestType::ManifestPartialUpdate: {
180 ManifestPartialUpdateSteps();
183 case ci::RequestType::PartialUninstall: {
184 ManifestPartialUninstallSteps();
187 case ci::RequestType::Move: {
191 case ci::RequestType::EnablePkg: {
195 case ci::RequestType::DisablePkg: {
199 case ci::RequestType::MigrateExtImg: {
200 MigrateExtImgSteps();
208 void WgtInstaller::InstallSteps() {
209 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
210 AddStep<ci::filesystem::StepUnzip>();
211 AddStep<wgt::configuration::StepParse>(
212 wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
213 AddStep<ci::configuration::StepCheckInstallLocation>();
214 AddStep<ci::pkgmgr::StepCheckInstallable>();
215 AddStep<ci::configuration::StepParsePreload>();
216 AddStep<ci::pkgmgr::StepCheckRestriction>();
217 AddStep<ci::configuration::StepCheckTizenVersion>();
218 AddStep<ci::security::StepCheckSignature>();
219 AddStep<ci::security::StepSaveSignature>();
220 AddStep<ci::security::StepPrivilegeCompatibility>(
221 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
222 AddStep<wgt::security::StepCheckSettingsLevel>();
223 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
224 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
225 AddStep<wgt::security::StepCheckWgtImePrivilege>();
226 AddStep<wgt::encryption::StepEncryptResources>();
227 AddStep<wgt::filesystem::StepWgtResourceDirectory>();
228 AddStep<ci::security::StepRollbackInstallationSecurity>();
229 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
230 AddStep<ci::filesystem::StepAcquireExternalStorage>(false);
231 AddStep<ci::filesystem::StepCopy>();
232 AddStep<ci::filesystem::StepCopyTep>();
233 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
234 AddStep<ci::filesystem::StepCreateStorageDirectories>();
235 AddStep<wgt::filesystem::StepCreateSymbolicLink>();
236 AddStep<wgt::filesystem::StepWgtPatchIcons>();
237 AddStep<ci::filesystem::StepCreateIcons>();
238 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
239 AddStep<wgt::security::StepCheckExtensionPrivileges>();
240 AddStep<wgt::pkgmgr::StepGenerateXml>();
241 AddStep<ci::pkgmgr::StepRegisterApplication>();
242 AddStep<ci::security::StepRegisterTrustAnchor>(
243 ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
244 AddStep<ci::security::StepPrivacyPrivilege>(
245 ci::security::StepPrivacyPrivilege::ActionType::Install);
246 AddStep<ci::security::StepRegisterSecurity>();
247 AddStep<ci::pkgmgr::StepRunParserPlugin>(
248 ci::Plugin::ActionType::Install);
249 AddStep<ci::filesystem::StepCreatePerUserStorageDirectories>(
250 wgt::filesystem::WgtAdditionalSharedDirs);
251 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
252 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
255 void WgtInstaller::UpdateSteps() {
256 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
257 AddStep<ci::filesystem::StepUnzip>();
258 AddStep<wgt::configuration::StepParse>(
259 wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
260 AddStep<ci::configuration::StepCheckInstallLocation>();
261 AddStep<ci::configuration::StepParsePreload>();
262 AddStep<ci::configuration::StepCheckTizenVersion>();
263 AddStep<ci::security::StepCheckSignature>();
264 AddStep<ci::security::StepSaveSignature>();
265 AddStep<ci::security::StepPrivilegeCompatibility>(
266 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
267 AddStep<wgt::security::StepCheckSettingsLevel>();
268 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
269 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
270 AddStep<wgt::security::StepCheckWgtImePrivilege>();
271 AddStep<ci::security::StepCheckOldCertificate>();
272 AddStep<wgt::encryption::StepEncryptResources>();
273 AddStep<wgt::filesystem::StepWgtResourceDirectory>();
274 AddStep<ci::configuration::StepParseManifest>(
275 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
276 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
277 AddStep<ci::configuration::StepBlockCrossUpdate>();
278 AddStep<ci::pkgmgr::StepKillApps>();
279 AddStep<ci::backup::StepBackupManifest>();
280 AddStep<ci::backup::StepBackupIcons>();
281 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
282 AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
283 AddStep<ci::security::StepRevokeTrustAnchor>();
284 AddStep<ci::backup::StepCopyBackup>();
285 AddStep<ci::filesystem::StepUpdateTep>();
286 AddStep<ci::filesystem::StepUpdateStorageDirectories>();
287 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
288 AddStep<wgt::filesystem::StepCreateSymbolicLink>();
289 AddStep<wgt::filesystem::StepWgtPatchIcons>();
290 AddStep<ci::filesystem::StepCreateIcons>();
291 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
292 AddStep<ci::filesystem::StepCopyStorageDirectories>();
293 AddStep<wgt::security::StepCheckExtensionPrivileges>();
294 AddStep<wgt::pkgmgr::StepGenerateXml>();
295 AddStep<ci::pkgmgr::StepUpdateApplication>();
296 AddStep<ci::security::StepRegisterTrustAnchor>(
297 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
298 AddStep<ci::security::StepPrivacyPrivilege>(
299 ci::security::StepPrivacyPrivilege::ActionType::Update);
300 AddStep<ci::security::StepUpdateSecurity>();
301 AddStep<ci::pkgmgr::StepRunParserPlugin>(
302 ci::Plugin::ActionType::Upgrade);
303 AddStep<ci::filesystem::StepUpdatePerUserStorageDirectories>();
304 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
305 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
308 void WgtInstaller::UninstallSteps() {
309 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
310 AddStep<ci::pkgmgr::StepCheckRestriction>();
311 AddStep<ci::pkgmgr::StepCheckRemovable>();
312 AddStep<ci::pkgmgr::StepCheckForceClean>();
313 AddStep<ci::configuration::StepParseManifest>(
314 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
315 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
316 AddStep<ci::configuration::StepCheckInstallLocation>();
317 AddStep<ci::pkgmgr::StepKillApps>();
318 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
319 AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
320 AddStep<ci::pkgmgr::StepRunParserPlugin>(
321 ci::Plugin::ActionType::Uninstall);
322 AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>(
323 wgt::filesystem::WgtAdditionalSharedDirs);
324 AddStep<ci::pkgmgr::StepUnregisterApplication>();
325 AddStep<ci::filesystem::StepRemoveTep>();
326 AddStep<ci::filesystem::StepRemoveFiles>();
327 AddStep<ci::filesystem::StepRemoveZipImage>();
328 AddStep<ci::filesystem::StepRemoveIcons>();
329 AddStep<wgt::encryption::StepRemoveEncryptionData>();
330 AddStep<ci::security::StepUnregisterTrustAnchor>();
331 AddStep<ci::security::StepPrivacyPrivilege>(
332 ci::security::StepPrivacyPrivilege::ActionType::Uninstall);
333 AddStep<ci::security::StepRevokeSecurity>();
334 AddStep<ci::pkgmgr::StepRemoveManifest>();
335 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
338 void WgtInstaller::ReinstallSteps() {
339 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
340 AddStep<wgt::configuration::StepCheckRDSManifest>();
341 AddStep<wgt::configuration::StepParse>(
342 wgt::configuration::StepParse::ConfigLocation::RESOURCE_WGT, false);
343 AddStep<ci::configuration::StepCheckInstallLocation>();
344 AddStep<ci::configuration::StepParsePreload>();
345 AddStep<ci::pkgmgr::StepCheckRestriction>();
346 AddStep<ci::configuration::StepCheckTizenVersion>();
347 AddStep<ci::pkgmgr::StepKillApps>();
348 AddStep<ci::configuration::StepParseManifest>(
349 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
350 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
351 AddStep<ci::configuration::StepBlockCrossUpdate>();
352 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
353 AddStep<ci::security::StepRevokeTrustAnchor>();
354 AddStep<ci::rds::StepRDSParse>();
355 AddStep<ci::filesystem::StepUpdateTep>();
356 AddStep<ci::rds::StepRDSModify>();
357 AddStep<wgt::security::StepCheckExtensionPrivileges>();
358 AddStep<ci::security::StepRegisterTrustAnchor>(
359 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
360 AddStep<ci::security::StepPrivacyPrivilege>(
361 ci::security::StepPrivacyPrivilege::ActionType::Update);
362 AddStep<ci::security::StepUpdateSecurity>();
363 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
364 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
367 void WgtInstaller::DeltaSteps() {
368 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
369 AddStep<ci::filesystem::StepUnzip>();
370 AddStep<wgt::configuration::StepParse>(
371 wgt::configuration::StepParse::ConfigLocation::PACKAGE, false);
372 AddStep<ci::configuration::StepCheckInstallLocation>();
373 AddStep<ci::configuration::StepParseManifest>(
374 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
375 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
376 AddStep<ci::configuration::StepParsePreload>();
377 AddStep<ci::configuration::StepCheckTizenVersion>();
378 AddStep<ci::filesystem::StepEnableExternalMount>();
379 AddStep<wgt::filesystem::StepWgtUndoPatchStorageDirectories>();
380 AddStep<ci::filesystem::StepDeltaPatch>("res/wgt/");
381 AddStep<ci::filesystem::StepDisableExternalMount>();
382 AddStep<wgt::configuration::StepCheckStartFiles>();
383 AddStep<ci::security::StepCheckSignature>();
384 AddStep<ci::security::StepSaveSignature>();
385 AddStep<ci::security::StepPrivilegeCompatibility>(
386 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
387 AddStep<wgt::security::StepCheckSettingsLevel>();
388 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
389 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
390 AddStep<wgt::security::StepCheckWgtImePrivilege>();
391 AddStep<ci::security::StepCheckOldCertificate>();
392 AddStep<wgt::encryption::StepEncryptResources>();
393 AddStep<wgt::filesystem::StepWgtResourceDirectory>();
394 AddStep<ci::configuration::StepBlockCrossUpdate>();
395 AddStep<ci::pkgmgr::StepKillApps>();
396 AddStep<ci::backup::StepBackupManifest>();
397 AddStep<ci::backup::StepBackupIcons>();
398 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
399 AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
400 AddStep<ci::security::StepRevokeTrustAnchor>();
401 AddStep<ci::backup::StepCopyBackup>();
402 AddStep<ci::filesystem::StepUpdateTep>();
403 AddStep<ci::filesystem::StepUpdateStorageDirectories>();
404 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
405 AddStep<wgt::filesystem::StepCreateSymbolicLink>();
406 AddStep<wgt::filesystem::StepWgtPatchIcons>();
407 AddStep<ci::filesystem::StepCreateIcons>();
408 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
409 AddStep<ci::filesystem::StepCopyStorageDirectories>();
410 AddStep<wgt::security::StepCheckExtensionPrivileges>();
411 AddStep<wgt::pkgmgr::StepGenerateXml>();
412 AddStep<ci::pkgmgr::StepUpdateApplication>();
413 AddStep<ci::security::StepRegisterTrustAnchor>(
414 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
415 AddStep<ci::security::StepPrivacyPrivilege>(
416 ci::security::StepPrivacyPrivilege::ActionType::Update);
417 AddStep<ci::security::StepUpdateSecurity>();
418 AddStep<ci::pkgmgr::StepRunParserPlugin>(
419 ci::Plugin::ActionType::Upgrade);
420 AddStep<ci::filesystem::StepUpdatePerUserStorageDirectories>();
421 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
422 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
425 void WgtInstaller::RecoverySteps() {
426 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
427 AddStep<ci::recovery::StepOpenRecoveryFile>();
428 AddStep<ci::filesystem::StepRemoveTemporaryDirectory>();
429 AddStep<ci::configuration::StepParseManifest>(
430 ci::configuration::StepParseManifest::ManifestLocation::RECOVERY,
431 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
432 AddStep<ci::filesystem::StepRecoverIcons>();
433 AddStep<ci::filesystem::StepRecoverManifest>();
434 AddStep<ci::filesystem::StepRecoverExternalStorage>();
435 AddStep<ci::filesystem::StepRecoverStorageDirectories>();
436 AddStep<ci::filesystem::StepRecoverPerUserStorageDirectories>();
437 AddStep<ci::filesystem::StepRecoverGlobalAppSymlinks>();
438 AddStep<ci::filesystem::StepRecoverFiles>();
439 AddStep<ci::mount::StepMountRecover>();
440 AddStep<wgt::security::StepWgtRecoverSignature>();
441 AddStep<ci::security::StepRecoverPrivilegeCompatibility>(
442 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
443 AddStep<ci::filesystem::StepRecoverChangeOwner>();
444 AddStep<ci::security::StepRecoverSecurity>();
445 AddStep<ci::pkgmgr::StepRecoverApplication>();
446 AddStep<ci::security::StepRecoverTrustAnchor>();
449 void WgtInstaller::MountInstallSteps() {
450 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
451 AddStep<ci::mount::StepMountUnpacked>();
452 AddStep<wgt::configuration::StepParse>(
453 wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
454 AddStep<ci::configuration::StepCheckInstallLocation>();
455 AddStep<ci::pkgmgr::StepCheckInstallable>();
456 AddStep<ci::configuration::StepParsePreload>();
457 AddStep<ci::pkgmgr::StepCheckRestriction>();
458 AddStep<ci::configuration::StepCheckTizenVersion>();
459 AddStep<ci::security::StepCheckSignature>();
460 AddStep<ci::security::StepSaveSignature>();
461 AddStep<ci::security::StepPrivilegeCompatibility>(
462 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
463 AddStep<wgt::security::StepCheckSettingsLevel>();
464 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
465 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
466 AddStep<wgt::security::StepCheckWgtImePrivilege>();
467 AddStep<wgt::encryption::StepEncryptResources>();
468 AddStep<ci::security::StepRollbackInstallationSecurity>();
469 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
470 AddStep<ci::mount::StepMountInstall>();
471 AddStep<wgt::filesystem::StepWgtPreparePackageDirectory>();
472 AddStep<ci::filesystem::StepCopyTep>();
473 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
474 AddStep<ci::filesystem::StepCreateStorageDirectories>();
475 AddStep<wgt::filesystem::StepCreateSymbolicLink>();
476 AddStep<wgt::filesystem::StepWgtPatchIcons>();
477 AddStep<ci::filesystem::StepCreateIcons>();
478 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
479 AddStep<wgt::pkgmgr::StepGenerateXml>();
480 AddStep<wgt::security::StepCheckExtensionPrivileges>();
481 AddStep<ci::pkgmgr::StepRegisterApplication>();
482 AddStep<ci::security::StepRegisterTrustAnchor>(
483 ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
484 AddStep<ci::security::StepPrivacyPrivilege>(
485 ci::security::StepPrivacyPrivilege::ActionType::Install);
486 AddStep<ci::security::StepRegisterSecurity>();
487 AddStep<ci::pkgmgr::StepRunParserPlugin>(
488 ci::Plugin::ActionType::Install);
489 AddStep<ci::filesystem::StepCreatePerUserStorageDirectories>(
490 wgt::filesystem::WgtAdditionalSharedDirs);
491 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
492 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
495 void WgtInstaller::MountUpdateSteps() {
496 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
497 AddStep<ci::mount::StepMountUnpacked>();
498 AddStep<wgt::configuration::StepParse>(
499 wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
500 AddStep<ci::configuration::StepCheckInstallLocation>();
501 AddStep<ci::configuration::StepParsePreload>();
502 AddStep<ci::configuration::StepCheckTizenVersion>();
503 AddStep<ci::security::StepCheckSignature>();
504 AddStep<ci::security::StepSaveSignature>();
505 AddStep<ci::security::StepPrivilegeCompatibility>(
506 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
507 AddStep<wgt::security::StepCheckSettingsLevel>();
508 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
509 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
510 AddStep<wgt::security::StepCheckWgtImePrivilege>();
511 AddStep<ci::security::StepCheckOldCertificate>();
512 AddStep<ci::configuration::StepParseManifest>(
513 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
514 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
515 AddStep<ci::configuration::StepBlockCrossUpdate>();
516 AddStep<ci::security::StepRevokeTrustAnchor>();
517 AddStep<ci::pkgmgr::StepKillApps>();
518 AddStep<ci::backup::StepBackupManifest>();
519 AddStep<ci::backup::StepBackupIcons>();
520 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
521 AddStep<ci::mount::StepMountUpdate>();
522 AddStep<wgt::filesystem::StepWgtUpdatePackageDirectory>();
523 AddStep<ci::filesystem::StepUpdateTep>();
524 AddStep<ci::filesystem::StepUpdateStorageDirectories>();
525 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
526 AddStep<wgt::filesystem::StepCreateSymbolicLink>();
527 AddStep<wgt::filesystem::StepWgtPatchIcons>();
528 AddStep<ci::filesystem::StepCreateIcons>();
529 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
530 AddStep<wgt::security::StepCheckExtensionPrivileges>();
531 AddStep<wgt::pkgmgr::StepGenerateXml>();
532 AddStep<ci::pkgmgr::StepUpdateApplication>();
533 AddStep<ci::security::StepRegisterTrustAnchor>(
534 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
535 AddStep<ci::security::StepPrivacyPrivilege>(
536 ci::security::StepPrivacyPrivilege::ActionType::Update);
537 AddStep<ci::security::StepUpdateSecurity>();
538 AddStep<ci::pkgmgr::StepRunParserPlugin>(
539 ci::Plugin::ActionType::Upgrade);
540 AddStep<ci::filesystem::StepUpdatePerUserStorageDirectories>();
541 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>(true);
542 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
545 void WgtInstaller::ManifestDirectInstallSteps() {
546 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
547 AddStep<wgt::configuration::StepParse>(
548 wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
549 AddStep<ci::pkgmgr::StepCheckInstallable>();
550 AddStep<ci::configuration::StepParsePreload>();
551 AddStep<ci::configuration::StepCheckTizenVersion>();
552 AddStep<wgt::security::StepDirectManifestCheckSignature>();
553 AddStep<ci::security::StepSaveSignature>();
554 AddStep<ci::security::StepPrivilegeCompatibility>(
555 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
556 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
557 AddStep<wgt::security::StepCheckWgtImePrivilege>();
558 AddStep<wgt::security::StepCheckSettingsLevel>();
559 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
560 AddStep<ci::security::StepRollbackInstallationSecurity>();
561 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
562 AddStep<wgt::filesystem::StepWgtPatchIcons>();
563 AddStep<wgt::pkgmgr::StepGenerateXml>();
564 AddStep<ci::pkgmgr::StepRegisterApplication>();
565 AddStep<ci::security::StepRegisterTrustAnchor>(
566 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
567 AddStep<ci::security::StepPrivacyPrivilege>(
568 ci::security::StepPrivacyPrivilege::ActionType::Install);
569 AddStep<ci::security::StepRegisterSecurity>();
570 AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Install);
571 AddStep<ci::filesystem::StepCreatePerUserStorageDirectories>(
572 wgt::filesystem::WgtAdditionalSharedDirs);
573 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
574 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
577 void WgtInstaller::ManifestDirectUpdateSteps() {
578 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
579 AddStep<wgt::configuration::StepParse>(
580 wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
581 AddStep<ci::configuration::StepParsePreload>();
582 AddStep<ci::configuration::StepCheckTizenVersion>();
583 AddStep<wgt::security::StepDirectManifestCheckSignature>();
584 AddStep<ci::security::StepSaveSignature>();
585 AddStep<ci::security::StepPrivilegeCompatibility>(
586 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
587 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
588 AddStep<wgt::security::StepCheckWgtImePrivilege>();
589 AddStep<wgt::security::StepCheckSettingsLevel>();
590 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
591 AddStep<ci::configuration::StepParseManifest>(
592 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
593 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
594 AddStep<ci::pkgmgr::StepKillApps>();
595 AddStep<ci::filesystem::StepCopyTep>();
596 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
597 AddStep<wgt::filesystem::StepWgtPatchIcons>();
598 AddStep<wgt::pkgmgr::StepGenerateXml>();
599 AddStep<ci::pkgmgr::StepUpdateApplication>();
600 AddStep<ci::security::StepRegisterTrustAnchor>(
601 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
602 AddStep<ci::security::StepPrivacyPrivilege>(
603 ci::security::StepPrivacyPrivilege::ActionType::Update);
604 AddStep<ci::security::StepUpdateSecurity>();
605 AddStep<ci::pkgmgr::StepRunParserPlugin>(
606 ci::Plugin::ActionType::Upgrade);
607 AddStep<ci::filesystem::StepUpdatePerUserStorageDirectories>();
608 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
609 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
612 void WgtInstaller::ReadonlyUpdateInstallSteps() {
613 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
614 AddStep<ci::filesystem::StepUnzip>();
615 AddStep<wgt::configuration::StepParse>(
616 wgt::configuration::StepParse::ConfigLocation::PACKAGE, true);
617 AddStep<ci::configuration::StepParsePreload>();
618 AddStep<ci::configuration::StepCheckTizenVersion>();
619 AddStep<ci::security::StepCheckSignature>();
620 AddStep<ci::security::StepPrivilegeCompatibility>(
621 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
622 AddStep<wgt::security::StepCheckSettingsLevel>();
623 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
624 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
625 AddStep<wgt::security::StepCheckWgtImePrivilege>();
626 AddStep<ci::security::StepCheckOldCertificate>();
627 AddStep<wgt::encryption::StepEncryptResources>();
628 AddStep<wgt::filesystem::StepWgtResourceDirectory>();
629 AddStep<ci::security::StepRollbackInstallationSecurity>();
630 AddStep<ci::configuration::StepSwitchReadonlyMode>();
631 AddStep<ci::configuration::StepParseManifest>(
632 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
633 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
634 AddStep<ci::configuration::StepSwitchReadonlyMode>();
635 AddStep<ci::configuration::StepBlockCrossUpdate>();
636 AddStep<ci::pkgmgr::StepKillApps>();
637 AddStep<ci::filesystem::StepCopy>();
638 AddStep<ci::filesystem::StepCopyTep>();
639 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
640 AddStep<ci::filesystem::StepCreateStorageDirectories>();
641 AddStep<wgt::filesystem::StepCreateSymbolicLink>();
642 AddStep<wgt::filesystem::StepWgtPatchIcons>();
643 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
644 AddStep<wgt::security::StepCheckExtensionPrivileges>();
645 AddStep<wgt::pkgmgr::StepGenerateXml>();
646 AddStep<ci::pkgmgr::StepUpdateApplication>();
647 AddStep<ci::security::StepRegisterTrustAnchor>(
648 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
649 AddStep<ci::security::StepPrivacyPrivilege>(
650 ci::security::StepPrivacyPrivilege::ActionType::Update);
651 AddStep<ci::security::StepUpdateSecurity>();
652 AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Upgrade);
653 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
654 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
657 void WgtInstaller::ReadonlyUpdateUninstallSteps() {
658 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
659 AddStep<ci::pkgmgr::StepCheckRestriction>();
660 AddStep<ci::pkgmgr::StepCheckRemovable>();
661 AddStep<ci::configuration::StepParseManifest>(
662 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
663 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
664 AddStep<ci::configuration::StepSwitchReadonlyMode>();
665 AddStep<ci::configuration::StepParseManifest>(
666 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
667 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
668 AddStep<ci::configuration::StepParsePreload>();
669 AddStep<wgt::configuration::StepSetOldSignatureFilesLocation>();
670 AddStep<ci::security::StepCheckSignature>();
671 AddStep<ci::security::StepSaveSignature>();
672 AddStep<ci::security::StepPrivilegeCompatibility>(
673 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
674 AddStep<ci::configuration::StepSwitchReadonlyMode>();
675 AddStep<ci::pkgmgr::StepKillApps>();
676 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
677 AddStep<ci::filesystem::StepRemoveTep>();
678 AddStep<ci::filesystem::StepRemoveFiles>();
679 AddStep<ci::filesystem::StepRemoveZipImage>();
680 AddStep<ci::pkgmgr::StepUpdateApplication>();
681 AddStep<ci::configuration::StepSwitchReadonlyMode>();
682 AddStep<ci::security::StepRevokeTrustAnchor>();
683 AddStep<ci::security::StepRegisterTrustAnchor>(
684 ci::security::StepRegisterTrustAnchor::RegisterType::UPDATE);
685 AddStep<ci::security::StepPrivacyPrivilege>(
686 ci::security::StepPrivacyPrivilege::ActionType::Update);
687 AddStep<ci::security::StepUpdateSecurity>();
688 AddStep<ci::pkgmgr::StepRemoveManifest>();
689 AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Upgrade);
692 void WgtInstaller::ManifestPartialInstallSteps() {
693 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
694 AddStep<wgt::configuration::StepParse>(
695 wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
696 AddStep<ci::configuration::StepParsePreload>();
697 AddStep<ci::security::StepCheckSignature>();
698 AddStep<ci::security::StepSaveSignature>();
699 AddStep<ci::security::StepPrivilegeCompatibility>(
700 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
701 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
702 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
703 AddStep<ci::pkgmgr::StepRegisterApplication>();
704 AddStep<ci::security::StepRegisterTrustAnchor>(
705 ci::security::StepRegisterTrustAnchor::RegisterType::INSTALL);
706 AddStep<ci::security::StepPrivacyPrivilege>(
707 ci::security::StepPrivacyPrivilege::ActionType::Install);
708 AddStep<ci::security::StepRegisterSecurity>();
709 AddStep<ci::pkgmgr::StepRunParserPlugin>(ci::Plugin::ActionType::Install);
710 AddStep<ci::filesystem::StepCreatePerUserStorageDirectories>(
711 wgt::filesystem::WgtAdditionalSharedDirs);
712 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
715 void WgtInstaller::ManifestPartialUpdateSteps() {
716 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
717 AddStep<wgt::configuration::StepParse>(
718 wgt::configuration::StepParse::ConfigLocation::INSTALLED, true);
719 AddStep<ci::configuration::StepParsePreload>();
720 AddStep<ci::configuration::StepParseManifest>(
721 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
722 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
723 AddStep<ci::security::StepCheckSignature>();
724 AddStep<ci::security::StepSaveSignature>();
725 AddStep<ci::security::StepPrivilegeCompatibility>(
726 ci::security::StepPrivilegeCompatibility::InternalPrivType::WGT);
727 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
728 AddStep<ci::pkgmgr::StepKillApps>();
729 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
730 AddStep<ci::pkgmgr::StepUpdateApplication>();
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::StepRunParserPlugin>(
737 ci::Plugin::ActionType::Upgrade);
738 AddStep<ci::filesystem::StepUpdatePerUserStorageDirectories>();
739 AddStep<ci::filesystem::StepCreateGlobalAppSymlinks>();
742 void WgtInstaller::ManifestPartialUninstallSteps() {
743 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
744 AddStep<ci::pkgmgr::StepCheckRestriction>();
745 AddStep<ci::pkgmgr::StepCheckRemovable>();
746 AddStep<ci::pkgmgr::StepCheckForceClean>();
747 AddStep<ci::configuration::StepParseManifest>(
748 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
749 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
750 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
751 AddStep<ci::filesystem::StepOptionalAcquireExternalStorage>();
752 AddStep<ci::pkgmgr::StepRunParserPlugin>(
753 ci::Plugin::ActionType::Uninstall);
754 AddStep<ci::filesystem::StepRemovePerUserStorageDirectories>(
755 wgt::filesystem::WgtAdditionalSharedDirs);
756 AddStep<ci::pkgmgr::StepUnregisterApplication>();
757 AddStep<wgt::encryption::StepRemoveEncryptionData>();
758 AddStep<ci::security::StepUnregisterTrustAnchor>();
759 AddStep<ci::security::StepPrivacyPrivilege>(
760 ci::security::StepPrivacyPrivilege::ActionType::Uninstall);
761 AddStep<ci::security::StepRevokeSecurity>();
764 void WgtInstaller::MoveSteps() {
765 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
766 AddStep<ci::configuration::StepParseManifest>(
767 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
768 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
769 AddStep<ci::configuration::StepCheckInstallLocation>();
770 AddStep<ci::pkgmgr::StepKillApps>();
771 AddStep<ci::filesystem::StepMoveInstalledStorage>();
772 AddStep<ci::security::StepRegisterSecurity>();
775 void WgtInstaller::EnablePkgSteps() {
776 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
777 AddStep<ci::configuration::StepParseManifest>(
778 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
779 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
780 AddStep<ci::pkgmgr::StepKillApps>();
781 AddStep<ci::pkgmgr::StepUpdatePkgDisableInfo>(
782 ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Enable);
783 AddStep<ci::pkgmgr::StepRunParserPlugin>(
784 ci::Plugin::ActionType::Uninstall);
787 void WgtInstaller::DisablePkgSteps() {
788 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
789 AddStep<ci::configuration::StepParseManifest>(
790 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
791 ci::configuration::StepParseManifest::StoreLocation::NORMAL);
792 AddStep<ci::pkgmgr::StepKillApps>();
793 AddStep<ci::pkgmgr::StepUpdatePkgDisableInfo>(
794 ci::pkgmgr::StepUpdatePkgDisableInfo::ActionType::Disable);
795 AddStep<ci::pkgmgr::StepRunParserPlugin>(
796 ci::Plugin::ActionType::Uninstall);
799 void WgtInstaller::MigrateExtImgSteps() {
800 AddStep<ci::configuration::StepConfigure>(pkgmgr_);
801 AddStep<ci::security::StepMigrateLegacyExtImage>();
802 AddStep<ci::filesystem::StepChangeOwnershipAndPermission>();
805 void WgtInstaller::DefaultSteps() {
806 AddStep<ci::configuration::StepFail>();