diff --git a/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java b/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java
index 18d7f56..320f51d 100644
--- a/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java
+++ b/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/DeploymentAdminImpl.java
@@ -272,7 +272,10 @@
         }
         finally {
             if (tempPackage != null) {
-                Utils.delete(tempPackage);
+                if (!Utils.delete(tempPackage, true)) {
+                	m_log.log(LogService.LOG_ERROR, "Could not delete temporary deployment package from disk");
+                	succeeded = false;
+                }
             }
         	if (source != null) {
         	    sendCompleteEvent(source, target, succeeded);
@@ -353,7 +356,10 @@
             }
 
             File targetPackage = m_context.getDataFile(PACKAGE_DIR + File.separator + source.getName());
-            Utils.delete(targetPackage);
+            if (!Utils.delete(targetPackage, true)) {
+            	m_log.log(LogService.LOG_ERROR, "Could not delete deployment package from disk");
+            	throw new DeploymentException(DeploymentException.CODE_OTHER_ERROR, "Could not delete deployment package from disk");
+            }
             
             m_packages.remove(dp.getName());
 
diff --git a/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/Utils.java b/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/Utils.java
index fd02419..2627b3b 100644
--- a/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/Utils.java
+++ b/deploymentadmin/deploymentadmin/src/main/java/org/apache/felix/deploymentadmin/Utils.java
@@ -106,18 +106,6 @@
         return result;
     }
 
-
-    public static void delete(File target) {
-        // TODO merge with #delete(File, boolean)?!
-        if (target.isDirectory()) {
-            File[] childs = target.listFiles();
-            for (int i = 0; i < childs.length; i++) {
-                delete(childs[i]);
-            }
-        }
-        target.delete();
-    }
-
     public static boolean rename(File from, File to) {
         if (!from.renameTo(to)) {
             if (copy(from, to)) {
@@ -132,7 +120,7 @@
         return true;
     }
 
-    private static boolean delete(File root, boolean deleteRoot) {
+    public static boolean delete(File root, boolean deleteRoot) {
         boolean result = true;
         if (root.isDirectory()) {
             File[] files = root.listFiles();
