Modify the logic to support the virtual root
[platform/framework/native/installer.git] / src / Step / UninstallStep.cpp
index 6ebf052..b5d5a48 100755 (executable)
@@ -234,6 +234,7 @@ InstallerError
 UninstallStep::OnStateRemoveDir(void)
 {
        InstallerError error = INSTALLER_ERROR_NONE;
+       bool res = true;
 
        String rootPath;
        rootPath = __pContext->__rootPath;
@@ -245,8 +246,6 @@ UninstallStep::OnStateRemoveDir(void)
        result r = GetLastResult();
        if (r == E_SUCCESS && ospCompat == true)
        {
-               PackageId packageId = __pContext->__packageId;
-
                if (CompatibilityManager::FinalizeDataCaging(rootPath) == false)
                {
                        AppLog("[Tizen::Io] Failed to unmount directories for 2.0 application, appRootPath: %ls",
@@ -262,6 +261,13 @@ UninstallStep::OnStateRemoveDir(void)
 
        CompatibilityManager::CleanDirectories(rootPath, __pContext->__packageId);
 
+       String virtualRoot = rootPath + DIR_VIRTUAL_ROOT;
+       if (File::IsFileExist(virtualRoot) == true)
+       {
+               res = CompatibilityManager::FinalizeVirtualRoot(rootPath, __pContext->__packageId);
+               TryReturn(res == true, INSTALLER_ERROR_UNMOUNT_FAILED, "CompatibilityManager::FinalizeVirtualRoot(%ls) failed.", rootPath.GetPointer());
+       }
+
        AppLog("Directory::Remove - START");
 
        if (__pContext->__isHybridService == true)