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