--- 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