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 |
|
20 #include <bautils.h> |
18 #include <bautils.h> |
21 #include <sisdataprovider.h> |
|
22 |
|
23 #include <DRMLicenseManager.h> |
19 #include <DRMLicenseManager.h> |
24 #include "debug.h" |
|
25 #include <pathinfo.h> |
20 #include <pathinfo.h> |
26 #include <zipfilemember.h> |
21 #include <zipfilemember.h> |
|
22 #include "amdeploymentcomponentdata.h" |
|
23 #include "debug.h" |
27 |
24 |
28 _LIT8( KSisxMimeType, "x-epoc/x-sisx-app" ); |
25 _LIT8( KSisxMimeType, "x-epoc/x-sisx-app" ); |
29 _LIT( KTempDir, "piptemp\\" ); |
26 _LIT( KTempDir, "piptemp\\" ); |
30 _LIT8( KPipMimeType, "application/x-pip" ); |
27 _LIT8( KPipMimeType, "application/x-pip" ); |
31 _LIT8( KDrmMessageMimeType, "application/vnd.oma.drm.message" ); |
28 _LIT8( KDrmMessageMimeType, "application/vnd.oma.drm.message" ); |
32 _LIT8( KDrmContentMimeType, "application/vnd.oma.drm.content" ); |
29 _LIT8( KDrmContentMimeType, "application/vnd.oma.drm.content" ); |
33 _LIT8( KSisMimeType, "application/vnd.symbian.install"); |
30 _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 |
|
49 } |
48 } |
50 |
49 |
51 void CDeploymentComponentData::ConstructL(const TDesC8 &aData, |
50 void CDeploymentComponentData::ConstructL(const TDesC8 &aData, |
52 const TDesC8 &aMime) |
51 const TDesC8 &aMime) |
53 { |
52 { |
208 RDEBUG8_2("CDeploymentComponentData::SetDataL() aMimeType: (%S)", &aMimeType); |
207 RDEBUG8_2("CDeploymentComponentData::SetDataL() aMimeType: (%S)", &aMimeType); |
209 |
208 |
210 TUid ret(TUid::Null()); |
209 TUid ret(TUid::Null()); |
211 iMimeType = aMimeType.Left(KMaxMimeLength); |
210 iMimeType = aMimeType.Left(KMaxMimeLength); |
212 |
211 |
|
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 } |
213 if (IsSISInstallFile(aMimeType) ) |
273 if (IsSISInstallFile(aMimeType) ) |
214 { |
274 { |
215 RFs fs; |
275 RFs fs; |
216 User::LeaveIfError(fs.Connect() ); |
276 User::LeaveIfError(fs.Connect() ); |
217 CleanupClosePushL(fs); |
277 CleanupClosePushL(fs); |
218 ret = ResolveUidL(fs); |
278 ret = ResolveUidL(fs); |
219 CleanupStack::PopAndDestroy( &fs); |
279 CleanupStack::PopAndDestroy( &fs); |
220 } |
280 } |
221 RDEBUG8_2("CDeploymentComponentData::SetDataL() UID: (0x%x)", ret.iUid); |
281 RDEBUG8_2("CDeploymentComponentData::SetDataL() UID: (0x%x)", ret.iUid); |
222 return ret; |
282 return ret; |
224 |
284 |
225 TUid CDeploymentComponentData::SetDataL(const TFileName &aData, |
285 TUid CDeploymentComponentData::SetDataL(const TFileName &aData, |
226 const TDesC8& aMimeType) |
286 const TDesC8& aMimeType) |
227 { |
287 { |
228 RDEBUG_2("CDeploymentComponentData::SetDataL() TFileName: (%S)", &aData); |
288 RDEBUG_2("CDeploymentComponentData::SetDataL() TFileName: (%S)", &aData); |
|
289 |
|
290 _LIT(KNewPath, "c:\\private\\200267FB\\"); |
229 |
291 |
230 TUid ret(TUid::Null()); |
292 TUid ret(TUid::Null()); |
231 iMimeType = aMimeType.Left(KMaxMimeLength) ; |
293 iMimeType = aMimeType.Left(KMaxMimeLength) ; |
232 RFs fs; |
294 RFs fs; |
233 User::LeaveIfError(fs.Connect() ); |
295 User::LeaveIfError(fs.Connect() ); |
234 CleanupClosePushL(fs); |
296 CleanupClosePushL(fs); |
235 CFileMan *fm = CFileMan::NewL(fs); |
297 CFileMan *fm = CFileMan::NewL(fs); |
236 CleanupStack::PushL(fm); |
298 CleanupStack::PushL(fm); |
237 TFileName fn; |
299 TFileName fn; |
238 fn.Copy(iDataFileName); |
300 fn.Copy(iDataFileName); |
239 User::LeaveIfError(fm->Copy(aData, fn) ); |
301 |
|
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 |
240 |
336 |
241 if (IsSISInstallFile(aMimeType) ) |
337 if (IsSISInstallFile(aMimeType) ) |
242 { |
338 { |
243 ret = ResolveUidL(fs); |
339 ret = ResolveUidL(fs); |
244 } |
340 } |