installationservices/swi/source/swis/server/installationplanner.cpp
changeset 52 92f864ef0288
parent 42 d17dc5398051
child 75 2d2d25361590
equal deleted inserted replaced
42:d17dc5398051 52:92f864ef0288
  1148             HBufC* targetFileName;	    	   	
  1148             HBufC* targetFileName;	    	   	
  1149             targetFileName = listOfFilesToBeAdded[i]->Target().Alloc();	   
  1149             targetFileName = listOfFilesToBeAdded[i]->Target().Alloc();	   
  1150             CleanupStack::PushL(targetFileName);
  1150             CleanupStack::PushL(targetFileName);
  1151             TParsePtrC filename(*targetFileName);	    	   
  1151             TParsePtrC filename(*targetFileName);	    	   
  1152             TBool isApparcFile = EFalse;
  1152             TBool isApparcFile = EFalse;
  1153             TBuf<10> extension = TParsePtrC(*targetFileName).Ext();
  1153             HBufC* extension = TParsePtrC(*targetFileName).Ext().AllocLC();
  1154             
  1154             
  1155             if(!extension.Compare(KApparcRegistrationFileExtn)) // for resource files *_reg.rsc or *.rsc
  1155             if(!extension->Compare(KApparcRegistrationFileExtn)) // for resource files *_reg.rsc or *.rsc
  1156                 {
  1156                 {
  1157                 isApparcFile = ETrue;
  1157                 isApparcFile = ETrue;
  1158                 }
  1158                 }
  1159             else
  1159             else
  1160                 {
  1160                 {
  1161                 TInt extnLength = extension.Length();
  1161                 TInt extnLength = extension->Length();
  1162                 HBufC* extn;
  1162                 HBufC* extn;
  1163                 if(extnLength == 4)                            //for localizable resource files with extn like .r01
  1163                 if(extnLength == 4)                            //for localizable resource files with extn like .r01
  1164                     {
  1164                     {
  1165                     extn = extension.Right(2).AllocLC();
  1165                     extn = extension->Right(2).AllocLC();
  1166                     }
  1166                     }
  1167                 else if(extnLength == 5)
  1167                 else if(extnLength == 5)
  1168                     {
  1168                     {
  1169                     extn = extension.Right(3).AllocLC();       //for localizable resource files with extn like .r101	            
  1169                     extn = extension->Right(3).AllocLC();       //for localizable resource files with extn like .r101	            
  1170                     }
  1170                     }
  1171                 else
  1171                 else
  1172                     {   
  1172                     {   
  1173                     CleanupStack::PopAndDestroy(targetFileName);
  1173                     CleanupStack::PopAndDestroy(2, targetFileName);  //extension
  1174                     continue;
  1174                     continue;
  1175                     }
  1175                     }
  1176     
  1176     
  1177                 //Check to find if the extension is of valid localizable resource files 
  1177                 //Check to find if the extension is of valid localizable resource files 
  1178                 TInt value = 0;
  1178                 TInt value = 0;
  1191             if(isApparcFile)
  1191             if(isApparcFile)
  1192                 {	        
  1192                 {	        
  1193                 listOfFilesToBeExtracted.AppendL(listOfFilesToBeAdded[i]);
  1193                 listOfFilesToBeExtracted.AppendL(listOfFilesToBeAdded[i]);
  1194                 totalApplicationDataSize += listOfFilesToBeAdded[i]->UncompressedLength();
  1194                 totalApplicationDataSize += listOfFilesToBeAdded[i]->UncompressedLength();
  1195                 }	    
  1195                 }	    
  1196             CleanupStack::PopAndDestroy(targetFileName);  	    
  1196             CleanupStack::PopAndDestroy(2, targetFileName);  //extension	    
  1197             }                   
  1197             }                   
  1198             
  1198             
  1199         //Here we do extraction of rsc files ,before extracting files we check if there is an enough space on the disk(C drive)
  1199         //Here we do extraction of rsc files ,before extracting files we check if there is an enough space on the disk(C drive)
  1200         //to extract the files then extract the file to a temporary location and
  1200         //to extract the files then extract the file to a temporary location and
  1201         //check if it is a registration resource file(using target path) then store it into an array.     
  1201         //check if it is a registration resource file(using target path) then store it into an array.     
  1287                 {	                                             
  1287                 {	                                             
  1288                 User::Leave(err);
  1288                 User::Leave(err);
  1289                 }
  1289                 }
  1290             
  1290             
  1291             CleanupStack::PushL(appData);
  1291             CleanupStack::PushL(appData);
  1292             TUid appuid = appData->AppUid();
  1292             TUid appuid = appData->AppUid();            
  1293             HBufC* appname = appData->AppFile().AllocLC();
  1293             HBufC* finalAppName = TParsePtrC(appData->AppFile()).NameAndExt().AllocLC();
  1294             TBuf<100> finalAppName = TParsePtrC(*appname).NameAndExt();
       
  1295             const RPointerArray<Usif::CLocalizableAppInfo> aLocalizableAppInfoList = appData->LocalizableAppInfoList();
  1294             const RPointerArray<Usif::CLocalizableAppInfo> aLocalizableAppInfoList = appData->LocalizableAppInfoList();
  1296             HBufC* groupName = NULL;
  1295             HBufC* groupName = NULL;
  1297             HBufC* iconFileName = NULL;
  1296             HBufC* iconFileName = NULL;
  1298             TInt fileSize = 0 ;
  1297             TInt fileSize = 0 ;
  1299             
  1298             
  1304                     {
  1303                     {
  1305                     groupName = appData->GroupName().AllocLC();
  1304                     groupName = appData->GroupName().AllocLC();
  1306                     DEBUG_PRINTF2(_L("Application Group Name %S"), groupName);
  1305                     DEBUG_PRINTF2(_L("Application Group Name %S"), groupName);
  1307                     }
  1306                     }
  1308                 //Since locale does not exists no need to extract, create CNativeApplicationInfo without iconFileName
  1307                 //Since locale does not exists no need to extract, create CNativeApplicationInfo without iconFileName
  1309                 applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, finalAppName, groupName?*groupName:_L(""), _L(""));  
  1308                 applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, *finalAppName, groupName?*groupName:_L(""), _L(""));  
  1310                 }
  1309                 }
  1311             else
  1310             else
  1312                 {
  1311                 {
  1313                 Usif::CLocalizableAppInfo* localizedInfo = NULL;
  1312                 Usif::CLocalizableAppInfo* localizedInfo = NULL;
  1314                 const Usif::CCaptionAndIconInfo* captionAndIconInfo = NULL;
  1313                 const Usif::CCaptionAndIconInfo* captionAndIconInfo = NULL;
  1323                     {
  1322                     {
  1324                     if(captionAndIconInfo->IconFileName().Length())
  1323                     if(captionAndIconInfo->IconFileName().Length())
  1325                         iconFileName = captionAndIconInfo->IconFileName().AllocLC();
  1324                         iconFileName = captionAndIconInfo->IconFileName().AllocLC();
  1326                     
  1325                     
  1327                     if(iconFileName != NULL)
  1326                     if(iconFileName != NULL)
  1328                         {
  1327                         {                        
  1329                         TBuf<100> finalIconFileName;
  1328                         HBufC* finalIconFileName = TParsePtrC(*iconFileName).NameAndExt().AllocLC();
  1330                         finalIconFileName = TParsePtrC(*iconFileName).NameAndExt();
       
  1331                         
  1329                         
  1332                         _LIT(KIconFileNameFmt, "%c:\\resource\\install\\icon\\0x%08x\\%S");     // Applicaiton Uid
  1330                         _LIT(KIconFileNameFmt, "%c:\\resource\\install\\icon\\0x%08x\\%S");     // Applicaiton Uid
  1333                         iconFile.Format(KIconFileNameFmt, TUint(systemDrive), appuid.iUid,
  1331                         iconFile.Format(KIconFileNameFmt, TUint(systemDrive), appuid.iUid,
  1334                         &finalIconFileName);
  1332                         finalIconFileName);
  1335                         
  1333                         
  1336                         TInt err = fs.MkDirAll(iconFile);
  1334                         TInt err = fs.MkDirAll(iconFile);
  1337                         if (err!= KErrNone && err != KErrAlreadyExists)
  1335                         if (err!= KErrNone && err != KErrAlreadyExists)
  1338                         User::LeaveIfError(err);
  1336                         User::LeaveIfError(err);
  1339                         
  1337                         
  1340                         //Find from the list of files to be copied , the file description of the icon file returned by the parser
  1338                         //Find from the list of files to be copied , the file description of the icon file returned by the parser
  1341                         for(TInt k = 0; k < listOfFilesToBeAdded.Count() ; k++)
  1339                         for(TInt k = 0; k < listOfFilesToBeAdded.Count() ; k++)
  1342                             {                      
  1340                             {                      
  1343                             currentFileDescription = listOfFilesToBeAdded[k];
  1341                             currentFileDescription = listOfFilesToBeAdded[k];
  1344                             if(TParsePtrC(currentFileDescription->Target()).NameAndExt().Compare(finalIconFileName))
  1342                             if(TParsePtrC(currentFileDescription->Target()).NameAndExt().Compare(*finalIconFileName))
  1345                                 {
  1343                                 {
  1346                                 break;
  1344                                 break;
  1347                                 }
  1345                                 }
  1348                             }	              
  1346                             }	              
  1349                         //Check if there is enough space to extract the icon file           
  1347                         //Check if there is enough space to extract the icon file           
  1384                         
  1382                         
  1385                         DEBUG_PRINTF2(_L("Icon file to be extraced is %S"), &iconFile);
  1383                         DEBUG_PRINTF2(_L("Icon file to be extraced is %S"), &iconFile);
  1386                         User::LeaveIfError(iSisHelper.ExtractFileL(fs, tempIconFile, listOfFilesToBeAdded[i]->Index(), application->AbsoluteDataIndex(), UiHandler())); 	              
  1384                         User::LeaveIfError(iSisHelper.ExtractFileL(fs, tempIconFile, listOfFilesToBeAdded[i]->Index(), application->AbsoluteDataIndex(), UiHandler())); 	              
  1387                         DEBUG_PRINTF(_L8("Finished extracting Icon file successfuly"));
  1385                         DEBUG_PRINTF(_L8("Finished extracting Icon file successfuly"));
  1388                         //After copy the available disk space is reduced
  1386                         //After copy the available disk space is reduced
  1389                         currentAvailableDriveSpace -= fileSize;
  1387                         currentAvailableDriveSpace -= fileSize;                        
  1390                         CleanupStack::PopAndDestroy(2,iconFileName);  //file,iconFileSize
  1388                         CleanupStack::PopAndDestroy(3,iconFileName);  //file,finalIconFileName,iconFileSize
  1391                         
  1389                         
  1392                         //Create CNativeApplicationInfo with iconFileName
  1390                         //Create CNativeApplicationInfo with iconFileName
  1393                         applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, finalAppName, groupName?*groupName:_L(""), iconFile);                  
  1391                         applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, *finalAppName, groupName?*groupName:_L(""), iconFile);                                          
  1394                         }
  1392                         }
  1395                     else
  1393                     else
  1396                         {
  1394                         {
  1397                         //Since iconFileName does not exists no need to extract, create CNativeApplicationInfo without iconName
  1395                         //Since iconFileName does not exists no need to extract, create CNativeApplicationInfo without iconName
  1398                         applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, finalAppName, groupName?*groupName:_L(""), _L(""));  
  1396                         applicationInfo = Swi::CNativeComponentInfo::CNativeApplicationInfo::NewLC(appuid, *finalAppName, groupName?*groupName:_L(""), _L(""));  
  1399                         }
  1397                         }
  1400                     }
  1398                     }
  1401                 }	    
  1399                 }	    
  1402 
  1400 
  1403             DEBUG_PRINTF2(_L("Application Uid 0x%08x"), appuid);
  1401             DEBUG_PRINTF2(_L("Application Uid 0x%08x"), appuid);
  1404             DEBUG_PRINTF2(_L("Application Name %S"), appname);
  1402             DEBUG_PRINTF2(_L("Application Name %S"), finalAppName);
  1405             if(groupName)
  1403             if(groupName)
  1406                 DEBUG_PRINTF2(_L("Application Group Name %S"), groupName);
  1404                 DEBUG_PRINTF2(_L("Application Group Name %S"), groupName);
  1407             if(iconFile.Length())
  1405             if(iconFile.Length())
  1408                 DEBUG_PRINTF2(_L("Application Icon File Name %S"), &iconFile);
  1406                 DEBUG_PRINTF2(_L("Application Icon File Name %S"), &iconFile);
  1409                              
  1407                              
  1410             const_cast <Sis::CController&>(aController).AddApplicationInfoL(applicationInfo);
  1408             const_cast <Sis::CController&>(aController).AddApplicationInfoL(applicationInfo);
  1411             CleanupStack::Pop(applicationInfo);
  1409             CleanupStack::Pop(applicationInfo);
  1412             if(groupName)
  1410             if(groupName)
  1413                 CleanupStack::PopAndDestroy(3, appData);	//groupName,appName,appData
  1411                 CleanupStack::PopAndDestroy(3, appData);	//groupName,finalAppName,appData
  1414             else
  1412             else
  1415                 CleanupStack::PopAndDestroy(2, appData);    //appName,appData
  1413                 CleanupStack::PopAndDestroy(2, appData);    //finalAppName,appData
  1416             languages.Close();	    
  1414             languages.Close();	    
  1417             }
  1415             }
  1418               
  1416               
  1419         CleanupStack::PopAndDestroy(3,&drives);  //fs,driveSpaces,drives
  1417         CleanupStack::PopAndDestroy(3,&drives);  //fs,driveSpaces,drives
  1420         CleanupStack::Pop(&listOfFilesToBeExtracted);
  1418         CleanupStack::Pop(&listOfFilesToBeExtracted);