installationservices/swi/source/swis/server/processor.cpp
branchRCL_3
changeset 25 7333d7932ef7
parent 12 7ca52d38f8c3
child 26 8b7f4e561641
--- a/installationservices/swi/source/swis/server/processor.cpp	Thu Aug 19 10:02:49 2010 +0300
+++ b/installationservices/swi/source/swis/server/processor.cpp	Tue Aug 31 15:21:33 2010 +0300
@@ -259,10 +259,22 @@
 	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())
 			{
@@ -777,30 +789,11 @@
 		// for transaction service RemoveL().
 		if (fileToRemove.Length() > 3)
 			{
-#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);
-			    }
+			err = RemoveWithRetryAttemptL(fileToRemove);
 
 			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);
@@ -842,25 +835,8 @@
 					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
 
-		            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);
-		                }
+					err = RemoveWithRetryAttemptL(privatePath);
 
 					if (err != KErrNone && err != KErrNotReady &&
 						err != KErrNotFound && err != KErrPathNotFound && err != KErrCorrupt)
@@ -910,3 +886,21 @@
 		}	
 	}
 
+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;
+	}
+