installationservices/swi/source/swis/server/processor.cpp
branchRCL_3
changeset 66 8b7f4e561641
parent 65 7333d7932ef7
--- a/installationservices/swi/source/swis/server/processor.cpp	Tue Aug 31 15:21:33 2010 +0300
+++ b/installationservices/swi/source/swis/server/processor.cpp	Wed Sep 01 12:22:02 2010 +0100
@@ -259,22 +259,10 @@
 	case EInstallFiles:
 		if (DoStateInstallFilesL())
 			{
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK			
-			SwitchState(EParseApplicationRegistrationFiles);
-#else
 			SwitchState(EUpdateRegistry);
-#endif			
 			}
 		break;
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-	case EParseApplicationRegistrationFiles:
-	    if (DoParseApplicationRegistrationFilesL())
-	        {
-	        SwitchState(EUpdateRegistry);
-	        }
-	    break;
-#endif		
-	    
+
 	case EUpdateRegistry:
 		if (DoStateUpdateRegistryL())
 			{
@@ -789,11 +777,30 @@
 		// for transaction service RemoveL().
 		if (fileToRemove.Length() > 3)
 			{
-			err = RemoveWithRetryAttemptL(fileToRemove);
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+			TRAP(err, TransactionSession().RemoveL(fileToRemove));
+#else
+			TRAP(err, IntegrityServices().RemoveL(fileToRemove));
+#endif
+			// Display error dialog and leave if the file cannot be removed,
+			// ignoring missing files, media cards not present or corrupt media
+
+			TInt noOfDetletionAttempts=1;
+			while ((err == KErrInUse ||err==KErrAccessDenied )&& noOfDetletionAttempts <= KMaxNoOfDeletionAttempts )
+			    {
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+			    TRAP(err, TransactionSession().RemoveL(fileToRemove));
+#else
+			    TRAP(err, IntegrityServices().RemoveL(fileToRemove));
+#endif
+                DEBUG_PRINTF2(_L8("Deletion attempt %d"), noOfDetletionAttempts);
+                noOfDetletionAttempts++;
+                User::After(KRetryInterval);
+			    }
 
 			if(err !=KErrNone && err != KErrNotFound && err != KErrPathNotFound	&& err != KErrNotReady && err != KErrCorrupt)
 				{
-				CDisplayError* displayCannotDelete=CDisplayError::NewLC(iPlan.AppInfoL(), EUiCannotDelete, fileToRemove);
+        		CDisplayError* displayCannotDelete=CDisplayError::NewLC(iPlan.AppInfoL(), EUiCannotDelete, fileToRemove);
 				iUiHandler.ExecuteL(*displayCannotDelete);
 				CleanupStack::PopAndDestroy(displayCannotDelete);
 				User::Leave(err);
@@ -835,8 +842,25 @@
 					TChar driveLetter;
 					User::LeaveIfError(iFs.DriveToChar(drive, driveLetter));
 					privatePath[0] =  static_cast<TText> (driveLetter);
+					// try to remove the private directory, ignore if it can't be found
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+					TRAP(err, TransactionSession().RemoveL(privatePath));
+#else
+					TRAP(err, IntegrityServices().RemoveL(privatePath));
+#endif
 
-					err = RemoveWithRetryAttemptL(privatePath);
+		            TInt noOfDetletionAttempts=1;
+		            while ((err == KErrInUse ||err==KErrAccessDenied )&& noOfDetletionAttempts <= KMaxNoOfDeletionAttempts )
+		                {
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+		                TRAP(err, TransactionSession().RemoveL(privatePath));
+#else
+		                TRAP(err, IntegrityServices().RemoveL(privatePath));
+#endif
+		                DEBUG_PRINTF2(_L8("Deletion attempt %d"), noOfDetletionAttempts);
+		                noOfDetletionAttempts++;
+		                User::After(KRetryInterval);
+		                }
 
 					if (err != KErrNone && err != KErrNotReady &&
 						err != KErrNotFound && err != KErrPathNotFound && err != KErrCorrupt)
@@ -886,21 +910,3 @@
 		}	
 	}
 
-TInt CProcessor::RemoveWithRetryAttemptL(TDesC& aFileToRemove)
-	{
-	TInt err = KErrNone;
-	TInt noOfDetletionAttempts=1;
-			
-	do {
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-	    TRAP(err, TransactionSession().RemoveL(aFileToRemove));
-#else
-	    TRAP(err, IntegrityServices().RemoveL(aFileToRemove));
-#endif
-        DEBUG_PRINTF2(_L8("Deletion attempt %d"), noOfDetletionAttempts);
-        noOfDetletionAttempts++;
-        User::After(KRetryInterval);
-		} while ((err == KErrInUse ||err==KErrAccessDenied )&& noOfDetletionAttempts <= KMaxNoOfDeletionAttempts );
-	return err;
-	}
-