From 04d9343900df957f2c14634501bfc7fd84d9fb49 Mon Sep 17 00:00:00 2001 From: Dongeup Ham Date: Wed, 17 Apr 2013 18:08:17 +0900 Subject: [PATCH] Add additional error string and uninstallation error for preloaded app Change-Id: I1854d4127654acf36ac8cec36dcb74e2deb55634 Signed-off-by: Dongeup Ham --- inc/InstallerDefs.h | 3 +-- src/Context/InstallationContext.h | 1 + src/Manager/InstallerManager.cpp | 14 ++++++++++---- src/Step/SignatureStep.cpp | 6 +++++- src/Step/UninstallStep.cpp | 7 +++++++ 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/inc/InstallerDefs.h b/inc/InstallerDefs.h index f799a26..8c9a6ac 100755 --- a/inc/InstallerDefs.h +++ b/inc/InstallerDefs.h @@ -23,7 +23,7 @@ #include "InstallerUtil.h" -#define OSP_INSTALLER_VERSION "version=[20130417.1]" +#define OSP_INSTALLER_VERSION "version=[20130417.2]" #define DIR_BIN L"/bin" #define DIR_INFO L"/info" @@ -234,7 +234,6 @@ enum InstallerError INSTALLER_ERROR_CERTIFICATE_CHAIN_VERIFICATION_FAILED = 33, INSTALLER_ERROR_CERTIFICATE_EXPIRED = 34, INSTALLER_ERROR_PRIVILEGE_INVALID = 41, - INSTALLER_ERROR_PRIVILEGE_LEVEL_INVALID = 42, INSTALLER_ERROR_MENU_ICON_NOT_FOUND = 51, INSTALLER_ERROR_FATAL_ERROR = 61, INSTALLER_ERROR_OUT_OF_STORAGE = 62, diff --git a/src/Context/InstallationContext.h b/src/Context/InstallationContext.h index ba1308a..84d9565 100755 --- a/src/Context/InstallationContext.h +++ b/src/Context/InstallationContext.h @@ -137,6 +137,7 @@ public: Tizen::Base::String __url; Tizen::Base::String __description; Tizen::App::AppId __storeClientId; + Tizen::Base::String __additionalErrorString; int __certType; void* __pPkgmgrInstaller; diff --git a/src/Manager/InstallerManager.cpp b/src/Manager/InstallerManager.cpp index cf4fdac..7f4161c 100755 --- a/src/Manager/InstallerManager.cpp +++ b/src/Manager/InstallerManager.cpp @@ -384,9 +384,15 @@ CATCH: } else { - char errorMsg[11] = {0}; - snprintf(errorMsg, sizeof(errorMsg) - 1, "%d", error); - SendEvent(__pContext, __pContext->__packageId, "error", errorMsg); + String errorString; + errorString.Insert(error, 0); + + if (__pContext->__additionalErrorString.IsEmpty() == false) + { + errorString += L":"; + errorString += __pContext->__additionalErrorString; + } + SendEvent(__pContext, __pContext->__packageId, "error", errorString); SendEvent(__pContext, __pContext->__packageId, "end", "fail"); } @@ -793,7 +799,7 @@ InstallerManager::SendEvent(InstallationContext* pContext, const PackageId& pack TryReturn(pVal, false, "pVal is null."); pkgmgr_installer_send_signal((pkgmgr_installer*) pContext->__pPkgmgrInstaller, "tpk", pPackageId.get(), pKey.get(), pVal.get()); - AppLog("pkgmgr_installer_send_signal(tpk, %s, %s, %s)", pPackageId.get(), pKey.get(), pVal.get()); + AppLog("\n >> pkgmgr_installer_send_signal(tpk, %s, %s, %s)", pPackageId.get(), pKey.get(), pVal.get()); return true; } diff --git a/src/Step/SignatureStep.cpp b/src/Step/SignatureStep.cpp index 0baa4b4..54da6b6 100755 --- a/src/Step/SignatureStep.cpp +++ b/src/Step/SignatureStep.cpp @@ -228,7 +228,11 @@ SignatureStep::OnStateRootCert(void) if (pPrivilegeList != null) { r = PrivilegeHandler::GenerateCipherPrivilege(packageId, *pPrivilegeList, apiVisibility, privileges, hmacPrivileges, stringPrivilegeList); - TryCatch(r != E_ILLEGAL_ACCESS, error = INSTALLER_ERROR_PRIVILEGE_LEVEL_INVALID, "privMgr.GeneratePrivilegeString() failed. [PRIVILEGE_LEVEL_VIOLATION]"); + // TryCatch(r != E_ILLEGAL_ACCESS, error = INSTALLER_ERROR_PRIVILEGE_LEVEL_INVALID, "privMgr.GeneratePrivilegeString() failed. [PRIVILEGE_LEVEL_VIOLATION]"); + if (r == E_ILLEGAL_ACCESS) + { + __pContext->__additionalErrorString = L"Thrown when unauthorized privileges are detected. [partner] or [platform] signing is required."; + } TryCatch(!IsFailed(r), error = INSTALLER_ERROR_PRIVILEGE_INVALID, "privMgr.GeneratePrivilegeString() failed. [INVALID_PRIVILEGE]"); } diff --git a/src/Step/UninstallStep.cpp b/src/Step/UninstallStep.cpp index 0b7dc44..e43f941 100755 --- a/src/Step/UninstallStep.cpp +++ b/src/Step/UninstallStep.cpp @@ -131,6 +131,13 @@ UninstallStep::OnStateGetPackageInfo(void) result r = pPackageInfoImpl->Construct(packageId); TryReturn(r == E_SUCCESS, INSTALLER_ERROR_INTERNAL_STATE, "pPackageInfoImpl->Construct(%ls) failed.", packageId.GetPointer()); + bool isUninstallable = pPackageInfoImpl->IsUninstallable(); + if (isUninstallable == false) + { + __pContext->__additionalErrorString = L"Thrown when the application cannot be uninstalled because the application was preloaded."; + } + TryReturn(isUninstallable == true, INSTALLER_ERROR_PACKAGE_INVALID, "preload app cannot be uninstalled."); + __pContext->__rootPath = pPackageInfoImpl->GetAppRootPath(); if (__pContext->__rootPath.StartsWith(PATH_USR_APPS, 0) == true) { -- 2.7.4