Add additional error string and uninstallation error for preloaded app
authorDongeup Ham <dongeup.ham@samsung.com>
Wed, 17 Apr 2013 09:08:17 +0000 (18:08 +0900)
committerDongeup Ham <dongeup.ham@samsung.com>
Wed, 17 Apr 2013 09:52:51 +0000 (18:52 +0900)
Change-Id: I1854d4127654acf36ac8cec36dcb74e2deb55634
Signed-off-by: Dongeup Ham <dongeup.ham@samsung.com>
inc/InstallerDefs.h
src/Context/InstallationContext.h
src/Manager/InstallerManager.cpp
src/Step/SignatureStep.cpp
src/Step/UninstallStep.cpp

index f799a26..8c9a6ac 100755 (executable)
@@ -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,
index ba1308a..84d9565 100755 (executable)
@@ -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;
index cf4fdac..7f4161c 100755 (executable)
@@ -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;
 }
index 0baa4b4..54da6b6 100755 (executable)
@@ -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]");
 
        }
index 0b7dc44..e43f941 100755 (executable)
@@ -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)
        {