13 * |
13 * |
14 * Description: Implementation of applicationmanagement components |
14 * Description: Implementation of applicationmanagement components |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
|
18 #include "amdeploymentcomponentdata.h" |
|
19 |
18 #include <bautils.h> |
20 #include <bautils.h> |
|
21 #include <sisdataprovider.h> |
|
22 |
19 #include <DRMLicenseManager.h> |
23 #include <DRMLicenseManager.h> |
|
24 #include "debug.h" |
20 #include <pathinfo.h> |
25 #include <pathinfo.h> |
21 #include <zipfilemember.h> |
26 #include <zipfilemember.h> |
22 #include "amdeploymentcomponentdata.h" |
|
23 #include "debug.h" |
|
24 |
27 |
25 _LIT8( KSisxMimeType, "x-epoc/x-sisx-app" ); |
28 _LIT8( KSisxMimeType, "x-epoc/x-sisx-app" ); |
26 _LIT( KTempDir, "piptemp\\" ); |
29 _LIT( KTempDir, "piptemp\\" ); |
27 _LIT8( KPipMimeType, "application/x-pip" ); |
30 _LIT8( KPipMimeType, "application/x-pip" ); |
28 _LIT8( KDrmMessageMimeType, "application/vnd.oma.drm.message" ); |
31 _LIT8( KDrmMessageMimeType, "application/vnd.oma.drm.message" ); |
29 _LIT8( KDrmContentMimeType, "application/vnd.oma.drm.content" ); |
32 _LIT8( KDrmContentMimeType, "application/vnd.oma.drm.content" ); |
30 _LIT8( KSisMimeType, "application/vnd.symbian.install"); |
33 _LIT8( KSisMimeType, "application/vnd.symbian.install"); |
31 _LIT8( KJadMIMEType, "text/vnd.sun.j2me.app-descriptor" ); |
|
32 _LIT8( KJarMIMEType, "application/java-archive" ); |
|
33 _LIT8( KJavaMIMEType, "application/java" ); |
|
34 |
34 |
35 using namespace NApplicationManagement; |
35 using namespace NApplicationManagement; |
36 |
36 |
37 /** |
37 /** |
38 * Data class to Data access |
38 * Data class to Data access |
43 |
43 |
44 CDeploymentComponentData::CDeploymentComponentData(TType aType, |
44 CDeploymentComponentData::CDeploymentComponentData(TType aType, |
45 const TDesC8 &aDataFile) : |
45 const TDesC8 &aDataFile) : |
46 iDataFileName(aDataFile), iType(aType) |
46 iDataFileName(aDataFile), iType(aType) |
47 { |
47 { |
|
48 |
48 } |
49 } |
49 |
50 |
50 void CDeploymentComponentData::ConstructL(const TDesC8 &aData, |
51 void CDeploymentComponentData::ConstructL(const TDesC8 &aData, |
51 const TDesC8 &aMime) |
52 const TDesC8 &aMime) |
52 { |
53 { |
207 RDEBUG8_2("CDeploymentComponentData::SetDataL() aMimeType: (%S)", &aMimeType); |
208 RDEBUG8_2("CDeploymentComponentData::SetDataL() aMimeType: (%S)", &aMimeType); |
208 |
209 |
209 TUid ret(TUid::Null()); |
210 TUid ret(TUid::Null()); |
210 iMimeType = aMimeType.Left(KMaxMimeLength); |
211 iMimeType = aMimeType.Left(KMaxMimeLength); |
211 |
212 |
212 if (aMimeType.Length()!=NULL) |
|
213 { |
|
214 TUid ret(TUid::Null()); |
|
215 RFs fs; |
|
216 User::LeaveIfError(fs.Connect()); |
|
217 CleanupClosePushL(fs); |
|
218 CFileMan *fm = CFileMan::NewL(fs); |
|
219 CleanupStack::PushL(fm); |
|
220 TFileName oldfilepath; |
|
221 oldfilepath.Copy(iDataFileName); |
|
222 |
|
223 |
|
224 RDEBUG("App Mgmt before copy start"); |
|
225 TInt maxLength = iDataFileName.Length(); |
|
226 TChar charvaldot = '.'; |
|
227 TChar charvalslash = '\\'; |
|
228 //TFileName oldfilepath; |
|
229 TInt pos = iDataFileName.LocateReverse(charvaldot); |
|
230 |
|
231 TInt lengthDeleted = maxLength - pos; |
|
232 |
|
233 iDataFileName.Delete(pos, lengthDeleted); |
|
234 |
|
235 if (iMimeType == KSisxMimeType) |
|
236 { |
|
237 _LIT16(KExt,".sisx"); |
|
238 iExtn.Append(KExt); |
|
239 } |
|
240 if(iMimeType==KSisMimeType) |
|
241 { |
|
242 _LIT16(KExt,".sis"); |
|
243 iExtn.Append(KExt); |
|
244 } |
|
245 if(iMimeType==KPipMimeType) |
|
246 { |
|
247 _LIT16(KExt,".pip"); |
|
248 iExtn.Append(KExt); |
|
249 } |
|
250 if(iMimeType==KJadMIMEType) |
|
251 { |
|
252 _LIT16(KExt,".jad"); |
|
253 iExtn.Append(KExt); |
|
254 } |
|
255 if(iMimeType==KJarMIMEType) |
|
256 { |
|
257 _LIT16(KExt,".jar"); |
|
258 iExtn.Append(KExt); |
|
259 } |
|
260 if(iMimeType==KJavaMIMEType) |
|
261 { |
|
262 _LIT16(KExt,".jar"); |
|
263 iExtn.Append(KExt); |
|
264 } |
|
265 iDataFileName.Append(iExtn);//file name with sisx extension |
|
266 TFileName newfilepath; |
|
267 newfilepath.Copy(iDataFileName); |
|
268 User::LeaveIfError(fm->Rename(oldfilepath, newfilepath)); |
|
269 CleanupStack::PopAndDestroy(fm); |
|
270 CleanupStack::PopAndDestroy( &fs); |
|
271 //RDEBUG_2(" filename: %S", iDataFileName ); |
|
272 } |
|
273 if (IsSISInstallFile(aMimeType) ) |
213 if (IsSISInstallFile(aMimeType) ) |
274 { |
214 { |
275 RFs fs; |
215 RFs fs; |
276 User::LeaveIfError(fs.Connect() ); |
216 User::LeaveIfError(fs.Connect() ); |
277 CleanupClosePushL(fs); |
217 CleanupClosePushL(fs); |
278 ret = ResolveUidL(fs); |
218 ret = ResolveUidL(fs); |
279 CleanupStack::PopAndDestroy( &fs); |
219 CleanupStack::PopAndDestroy( &fs); |
280 } |
220 } |
281 RDEBUG8_2("CDeploymentComponentData::SetDataL() UID: (0x%x)", ret.iUid); |
221 RDEBUG8_2("CDeploymentComponentData::SetDataL() UID: (0x%x)", ret.iUid); |
282 return ret; |
222 return ret; |
284 |
224 |
285 TUid CDeploymentComponentData::SetDataL(const TFileName &aData, |
225 TUid CDeploymentComponentData::SetDataL(const TFileName &aData, |
286 const TDesC8& aMimeType) |
226 const TDesC8& aMimeType) |
287 { |
227 { |
288 RDEBUG_2("CDeploymentComponentData::SetDataL() TFileName: (%S)", &aData); |
228 RDEBUG_2("CDeploymentComponentData::SetDataL() TFileName: (%S)", &aData); |
289 |
|
290 _LIT(KNewPath, "c:\\private\\200267FB\\"); |
|
291 |
229 |
292 TUid ret(TUid::Null()); |
230 TUid ret(TUid::Null()); |
293 iMimeType = aMimeType.Left(KMaxMimeLength) ; |
231 iMimeType = aMimeType.Left(KMaxMimeLength) ; |
294 RFs fs; |
232 RFs fs; |
295 User::LeaveIfError(fs.Connect() ); |
233 User::LeaveIfError(fs.Connect() ); |
296 CleanupClosePushL(fs); |
234 CleanupClosePushL(fs); |
297 CFileMan *fm = CFileMan::NewL(fs); |
235 CFileMan *fm = CFileMan::NewL(fs); |
298 CleanupStack::PushL(fm); |
236 CleanupStack::PushL(fm); |
299 TFileName fn; |
237 TFileName fn; |
300 fn.Copy(iDataFileName); |
238 fn.Copy(iDataFileName); |
301 |
239 User::LeaveIfError(fm->Copy(aData, fn) ); |
302 RDEBUG("App Mgmt before copy start"); |
|
303 |
|
304 |
|
305 TInt maxLength = iDataFileName.Length(); |
|
306 TChar charvaldot = '.'; |
|
307 TChar charvalslash = '\\'; |
|
308 |
|
309 TInt pos = iDataFileName.LocateReverse(charvaldot); |
|
310 |
|
311 TInt lengthDeleted = maxLength-pos; |
|
312 |
|
313 iDataFileName.Delete(pos, lengthDeleted); |
|
314 |
|
315 TInt srcpos = aData.LocateReverse(charvaldot); |
|
316 |
|
317 TBuf<15> extn(aData.Mid(srcpos)); |
|
318 |
|
319 iDataFileName.Append(extn); |
|
320 |
|
321 TFileName newfilepath; |
|
322 newfilepath.Copy(iDataFileName); |
|
323 |
|
324 User::LeaveIfError(fm->Move(aData,KNewPath())); |
|
325 |
|
326 TFileName oldfilepath(KNewPath()); |
|
327 oldfilepath.Append(aData.Mid(aData.LocateReverse(charvalslash))); |
|
328 |
|
329 User::LeaveIfError(fm->Rename(oldfilepath, newfilepath)); |
|
330 |
|
331 |
|
332 //User::LeaveIfError(fm->Copy(aData, fn) ); |
|
333 |
|
334 RDEBUG("App Mgmt before copy End"); |
|
335 |
|
336 |
240 |
337 if (IsSISInstallFile(aMimeType) ) |
241 if (IsSISInstallFile(aMimeType) ) |
338 { |
242 { |
339 ret = ResolveUidL(fs); |
243 ret = ResolveUidL(fs); |
340 } |
244 } |