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<wgt::security::StepCheckSettingsLevel>();
134 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
135 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
136 AddStep<wgt::security::StepCheckWgtImePrivilege>();
137 AddStep<hybrid::encryption::StepEncryptResources>();
138 AddStep<ci::security::StepRollbackInstallationSecurity>();
139 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
140 AddStep<ci::filesystem::StepAcquireExternalStorage>(false);
141 AddStep<ci::filesystem::StepCopy>();
142 AddStep<ci::filesystem::StepCopyTep>();
143 AddStep<tpk::filesystem::StepTpkPatchIcons>();
144 AddStep<wgt::filesystem::StepWgtPatchIcons>();
145 AddStep<ci::filesystem::StepCreateIcons>();
146 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
147 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
148 AddStep<ci::filesystem::StepCreateStorageDirectories>();
149 AddStep<wgt::pkgmgr::StepGenerateXml>();
150 AddStep<hybrid::pkgmgr::StepGenerateXml>();
151 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
152 AddStep<hybrid::configuration::StepMergeTpkConfig>(
153 hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
154 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
155 AddStep<ci::security::StepPrivilegeCompatibility>(
156 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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<wgt::security::StepCheckSettingsLevel>();
186 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
187 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
188 AddStep<wgt::security::StepCheckWgtImePrivilege>();
189 AddStep<hybrid::encryption::StepEncryptResources>();
190 AddStep<ci::configuration::StepParseManifest>(
191 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
192 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
193 AddStep<ci::configuration::StepBlockCrossUpdate>();
194 AddStep<ci::pkgmgr::StepKillApps>();
195 AddStep<ci::backup::StepBackupManifest>();
196 AddStep<ci::backup::StepBackupIcons>();
197 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
198 AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
199 AddStep<ci::backup::StepCopyBackup>();
200 AddStep<ci::filesystem::StepUpdateTep>();
201 AddStep<ci::filesystem::StepUpdateStorageDirectories>();
202 AddStep<tpk::filesystem::StepTpkPatchIcons>();
203 AddStep<wgt::filesystem::StepWgtPatchIcons>();
204 AddStep<ci::filesystem::StepCreateIcons>();
205 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
206 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
207 AddStep<ci::filesystem::StepCopyStorageDirectories>();
208 AddStep<wgt::pkgmgr::StepGenerateXml>();
209 AddStep<hybrid::pkgmgr::StepGenerateXml>();
210 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
211 AddStep<hybrid::configuration::StepMergeTpkConfig>(
212 hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
213 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
214 AddStep<ci::security::StepPrivilegeCompatibility>(
215 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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<wgt::security::StepCheckSettingsLevel>();
282 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
283 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
284 AddStep<wgt::security::StepCheckWgtImePrivilege>();
285 AddStep<hybrid::encryption::StepEncryptResources>();
286 AddStep<ci::configuration::StepBlockCrossUpdate>();
287 AddStep<ci::pkgmgr::StepKillApps>();
288 AddStep<ci::backup::StepBackupManifest>();
289 AddStep<ci::backup::StepBackupIcons>();
290 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
291 AddStep<ci::filesystem::StepAcquireExternalStorage>(true);
292 AddStep<ci::backup::StepCopyBackup>();
293 AddStep<ci::filesystem::StepUpdateTep>();
294 AddStep<ci::filesystem::StepUpdateStorageDirectories>();
295 AddStep<tpk::filesystem::StepTpkPatchIcons>();
296 AddStep<wgt::filesystem::StepWgtPatchIcons>();
297 AddStep<ci::filesystem::StepCreateIcons>();
298 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
299 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
300 AddStep<ci::filesystem::StepCopyStorageDirectories>();
301 AddStep<wgt::pkgmgr::StepGenerateXml>();
302 AddStep<hybrid::pkgmgr::StepGenerateXml>();
303 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
304 AddStep<hybrid::configuration::StepMergeTpkConfig>(
305 hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
306 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
307 AddStep<ci::security::StepPrivilegeCompatibility>(
308 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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<wgt::security::StepCheckSettingsLevel>();
360 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
361 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
362 AddStep<wgt::security::StepCheckWgtImePrivilege>();
363 AddStep<hybrid::encryption::StepEncryptResources>();
364 AddStep<ci::security::StepRollbackInstallationSecurity>();
365 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
366 AddStep<ci::mount::StepMountInstall>();
367 AddStep<tpk::filesystem::StepTpkPreparePackageDirectory>();
368 AddStep<ci::filesystem::StepCopyTep>();
369 AddStep<tpk::filesystem::StepTpkPatchIcons>();
370 AddStep<wgt::filesystem::StepWgtPatchIcons>();
371 AddStep<ci::filesystem::StepCreateIcons>();
372 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
373 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
374 AddStep<ci::filesystem::StepCreateStorageDirectories>();
375 AddStep<wgt::pkgmgr::StepGenerateXml>();
376 AddStep<hybrid::pkgmgr::StepGenerateXml>();
377 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
378 AddStep<hybrid::configuration::StepMergeTpkConfig>(
379 hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
380 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
381 AddStep<ci::security::StepPrivilegeCompatibility>(
382 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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<wgt::security::StepCheckSettingsLevel>();
412 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
413 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
414 AddStep<wgt::security::StepCheckWgtImePrivilege>();
415 AddStep<hybrid::encryption::StepEncryptResources>();
416 AddStep<ci::configuration::StepParseManifest>(
417 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
418 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
419 AddStep<ci::configuration::StepBlockCrossUpdate>();
420 AddStep<ci::pkgmgr::StepKillApps>();
421 AddStep<ci::backup::StepBackupManifest>();
422 AddStep<ci::backup::StepBackupIcons>();
423 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
424 AddStep<ci::mount::StepMountUpdate>();
425 AddStep<tpk::filesystem::StepTpkUpdatePackageDirectory>();
426 AddStep<ci::filesystem::StepUpdateTep>();
427 AddStep<ci::filesystem::StepUpdateStorageDirectories>();
428 AddStep<tpk::filesystem::StepTpkPatchIcons>();
429 AddStep<wgt::filesystem::StepWgtPatchIcons>();
430 AddStep<ci::filesystem::StepCreateIcons>();
431 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
432 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
433 AddStep<wgt::pkgmgr::StepGenerateXml>();
434 AddStep<hybrid::pkgmgr::StepGenerateXml>();
435 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
436 AddStep<hybrid::configuration::StepMergeTpkConfig>(
437 hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
438 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
439 AddStep<ci::security::StepPrivilegeCompatibility>(
440 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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<wgt::security::StepCheckSettingsLevel>();
469 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
470 AddStep<ci::security::StepRollbackInstallationSecurity>();
471 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
472 AddStep<tpk::filesystem::StepTpkPatchIcons>();
473 AddStep<wgt::filesystem::StepWgtPatchIcons>();
474 AddStep<wgt::pkgmgr::StepGenerateXml>();
475 AddStep<hybrid::pkgmgr::StepGenerateXml>();
476 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
477 AddStep<hybrid::configuration::StepMergeTpkConfig>(
478 hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
479 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
480 AddStep<ci::security::StepPrivilegeCompatibility>(
481 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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<wgt::security::StepCheckSettingsLevel>();
508 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
509 AddStep<ci::configuration::StepParseManifest>(
510 ci::configuration::StepParseManifest::ManifestLocation::PACKAGE,
511 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
512 AddStep<ci::pkgmgr::StepKillApps>();
513 AddStep<ci::filesystem::StepRemoveGlobalAppSymlinks>();
514 AddStep<tpk::filesystem::StepTpkPatchIcons>();
515 AddStep<wgt::filesystem::StepWgtPatchIcons>();
516 AddStep<wgt::pkgmgr::StepGenerateXml>();
517 AddStep<hybrid::pkgmgr::StepGenerateXml>();
518 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
519 AddStep<hybrid::configuration::StepMergeTpkConfig>(
520 hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
521 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
522 AddStep<ci::security::StepPrivilegeCompatibility>(
523 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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::StepMergeTpkConfig>(
545 hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
546 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
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::StepMergeTpkConfig>(
575 hybrid::configuration::StepMergeTpkConfig::MergeType::OVERWRITE);
576 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
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<wgt::security::StepCheckSettingsLevel>();
634 AddStep<wgt::security::StepCheckWgtBackgroundCategory>();
635 AddStep<wgt::security::StepCheckWgtNotificationCategory>();
636 AddStep<wgt::security::StepCheckWgtImePrivilege>();
637 AddStep<hybrid::encryption::StepEncryptResources>();
638 AddStep<ci::configuration::StepSwitchReadonlyMode>();
639 AddStep<ci::configuration::StepParseManifest>(
640 ci::configuration::StepParseManifest::ManifestLocation::INSTALLED,
641 ci::configuration::StepParseManifest::StoreLocation::BACKUP);
642 AddStep<ci::configuration::StepSwitchReadonlyMode>();
643 AddStep<ci::configuration::StepBlockCrossUpdate>();
644 AddStep<ci::pkgmgr::StepKillApps>();
645 AddStep<ci::filesystem::StepCopy>();
646 AddStep<ci::filesystem::StepCopyTep>();
647 AddStep<tpk::filesystem::StepTpkPatchIcons>();
648 AddStep<wgt::filesystem::StepWgtPatchIcons>();
649 AddStep<ci::filesystem::StepCreateIcons>();
650 AddStep<wgt::filesystem::StepCopyPreviewIcons>();
651 AddStep<wgt::filesystem::StepWgtPatchStorageDirectories>();
652 AddStep<ci::filesystem::StepCreateStorageDirectories>();
653 AddStep<wgt::pkgmgr::StepGenerateXml>();
654 AddStep<hybrid::pkgmgr::StepGenerateXml>();
655 AddStep<tpk::pkgmgr::StepManifestAdjustment>();
656 AddStep<hybrid::configuration::StepMergeTpkConfig>(
657 hybrid::configuration::StepMergeTpkConfig::MergeType::CONCAT);
658 AddStep<hybrid::configuration::StepMergeTpkPrivileges>();
659 AddStep<ci::security::StepPrivilegeCompatibility>(
660 ci::security::StepPrivilegeCompatibility::InternalPrivType::BOTH);
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