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