--- 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;
- }
-