appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp
branchRCL_3
changeset 25 7333d7932ef7
parent 0 ba25891c3a9e
child 26 8b7f4e561641
--- a/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp	Thu Aug 19 10:02:49 2010 +0300
+++ b/appinstaller/AppinstUi/Daemon/Src/silentuninstaller.cpp	Tue Aug 31 15:21:33 2010 +0300
@@ -17,8 +17,9 @@
 
 // INCLUDE FILES
 #include "silentuninstaller.h"
+#include "SWInstDefs.h"
 #include "SWInstDebug.h"
-#include "SWInstDefs.h"
+
 
 using namespace Swi;
 
@@ -40,12 +41,13 @@
 //
 void CSilentUninstaller::ConstructL()
     {
-    // Silently kill the app. if needed.
-    FLOG(_L("[CSilentUninstaller] iKillApp = SwiUI::EPolicyAllowed;"));
-    iOptions.iKillApp = SwiUI::EPolicyAllowed; 
-    FLOG(_L("[CSilentUninstaller] iBreakDependency = SwiUI::EPolicyNotAllowed"));
-    iOptions.iBreakDependency = SwiUI::EPolicyNotAllowed;         
-    iOptionsPckg = iOptions;      
+    iConnected = EFalse;     
+    iSifOptions = Usif::COpaqueNamedParams::NewL();
+    iSifResults = Usif::COpaqueNamedParams::NewL();    
+    // Set parameters for silent uninstall.    
+    iSifOptions->AddIntL( Usif::KSifInParam_InstallSilently, ETrue );       
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppShutdown, ETrue );    
+    iSifOptions->AddIntL( Usif::KSifInParam_AllowAppBreakDependency, EFalse );     
     }
 
 
@@ -70,7 +72,15 @@
 CSilentUninstaller::~CSilentUninstaller()
     {
     FLOG( _L("[CSilentUninstaller] ~CSilentUninstaller") );
-    iLauncher.Close();
+
+    delete iSifOptions;
+    delete iSifResults;
+    
+    if ( iConnected )
+        {
+        iSWInstallerFW.Close();
+        iRegistrySession.Close();
+        }    
     }
 
 
@@ -81,17 +91,35 @@
 void CSilentUninstaller::UninstallL( 
     TUid& aUid, 
     TRequestStatus& aReqStatus, 
-    TDesC8& aMIME )
+    TDesC& aMIME )
     {
+    FLOG_1( _L("Daemon: UninstallL: UID = 0x%x"), aUid.iUid );
+    
     if ( !iConnected )
-        {
-        FLOG( _L("[CSilentUninstaller] Connect to server") );
-        User::LeaveIfError( iLauncher.Connect() );
-        iConnected = ETrue;            
-        }                
+        {               
+        FLOG( _L("[CSilentUninstaller] Connect to sif installer server") );    
+        User::LeaveIfError( iSWInstallerFW.Connect() );                         
+        FLOG( _L("[CSilentUninstaller] Connect to SisRegistery") );      
+        User::LeaveIfError( iRegistrySession.Connect() );                   
+        iConnected = ETrue;   
+        }
+      
+    // Set MIME type.
+    iSifOptions->AddStringL( Usif::KSifInParam_MimeType, aMIME );  
+           
+    // Usif need the component ID, so we need to map the package UID to 
+    // component ID. To do this simple we need SisRegistry.           
+    Usif::TComponentId componentId;
+    componentId = iRegistrySession.GetComponentIdForUidL( aUid );
+    FLOG_1( _L("Daemon: UninstallL: ComponentId = %d"), componentId );
+                                   
     // Launch the installation
-    FLOG( _L("[CSilentUninstaller] Launch uninstall") );
-    iLauncher.SilentUninstall( aReqStatus, aUid, iOptionsPckg, aMIME );
+    FLOG( _L("[CSilentUninstaller] Launch uninstall") );                 
+    iSWInstallerFW.Uninstall( componentId, 
+                              *iSifOptions,
+                              *iSifResults, 
+                              aReqStatus,
+                              ETrue );
     }
   
 
@@ -101,8 +129,8 @@
 // 
 void CSilentUninstaller::Cancel()
     {
-    FLOG( _L("[CSilentUninstaller] Cancel silet uninstall") );     
-    iLauncher.CancelAsyncRequest( SwiUI::ERequestSilentUninstall );   
+    FLOG( _L("[CSilentUninstaller] Cancel silet uninstall") );              
+    iSWInstallerFW.CancelOperation(); 
     }
 
 //  End of File