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. |
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); |