--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swi/inc/swi/asynclauncher.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,308 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* This file declares Swi::AsyncLauncher class that is used to launch installation
+* or removal.
+*
+*/
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __SWIASYNCLAUNCHER_H__
+#define __SWIASYNCLAUNCHER_H__
+
+#include <swi/launcher.h>
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include <usif/sif/sifcommon.h>
+#endif
+
+// Software Install namespace
+
+namespace Swi
+{
+
+class CUissClientHandler;
+
+/**
+ * Installation or removal CAsyncLauncher class.
+ *
+ * This class defines an asynchronous API to the software install
+ * which is intended to be used by a CActive object running within an
+ * active scheduler. @see CActiveScheduler
+ *
+ * The client needs to wait for the TRequestStatus object passed in to
+ * be updated, but MUST do so by using the active scheduler, otherwise
+ * the installer will be unable to initiate/process the multiple
+ * internal requests which make up an (un)install procedure.
+ *
+ * Within a process, all calls must originate from the same thread.
+ *
+ * It should be noted by users of this interface that starting an
+ * install causes an instance of a "helper" server to be started
+ * in process, sharing the same heap as the client process. This may
+ * lead to a number of side effects, including the heap being temporarily
+ * inbalanced after the client request is completed, due to the delay in
+ * the server thread shutting down.
+ *
+ * Note that the EEventAbortedInstall and EEventAbortedUnInstall
+ * callbacks are no longer generated.
+ *
+ * @publishedPartner
+ * @released
+ */
+class CAsyncLauncher : public CBase
+ {
+public:
+ /**
+ * Creates a new CAsyncLauncher object and places it on the cleanup stack.
+ *
+ * @return An instance of CAsyncLauncher
+ */
+ IMPORT_C static CAsyncLauncher *NewLC();
+
+ /**
+ * Creates a new CAsyncLauncher object.
+ *
+ * @return An instance of CAsyncLauncher
+ */
+ IMPORT_C static CAsyncLauncher *NewL();
+
+ /**
+ * Starts software installation in case of a locally available SISX file.
+ *
+ * @param aUiHandler UI implementation
+ * @param aFileName Local name of the SISX file
+ * @param aInstallPrefs Installation preferences
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ * @see CInstallPrefs
+ */
+ IMPORT_C void InstallL(MUiHandler& aUiHandler,
+ const TFileName& aFileName,
+ const CInstallPrefs& aInstallPrefs,
+ TRequestStatus &aRequest);
+
+ /**
+ * Starts software installation with package data provided by means of IPC.
+ *
+ * @param aUiHandler UI implementation
+ * @param aDataProvider SIS data provider implementation, which may supply
+ * data either by reading a file or by streaming
+ * @param aInstallPrefs Installation preferences
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ * @see MSisDataProvider
+ * @see CInstallPrefs
+ */
+ IMPORT_C void InstallL(MUiHandler& aUiHandler,
+ MSisDataProvider& aDataProvider,
+ const CInstallPrefs& aInstallPrefs,
+ TRequestStatus &aRequest);
+
+ /**
+ * Starts software installation with package data provided by means of IPC.
+ *
+ * @param aUiHandler UI implementation
+ * @param aFileHandle File handle of the file to install.
+ * @param aInstallPrefs Installation preferences
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ * @see CInstallPrefs
+ */
+ IMPORT_C void InstallL(MUiHandler& aUiHandler,
+ RFile& aFileHandle,
+ const CInstallPrefs& aInstallPrefs,
+ TRequestStatus &aRequest);
+
+ /**
+ * Uninstalls the main package identified by UID, and all the augmentations
+ * associated with this package.
+ *
+ * @param aUiHandler UI implementation
+ * @param aUid UID of the application to remove
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ */
+ IMPORT_C void UninstallL(MUiHandler& aUiHandler,
+ const TUid& aUid,
+ TRequestStatus &aRequest);
+
+ /**
+ * Uninstalls a specific package.
+ *
+ * @param aUiHandler UI implementation
+ * @param aPackage The specific package to uninstall.
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ */
+ IMPORT_C void UninstallL(MUiHandler& aUiHandler,
+ const CSisRegistryPackage& aPackage,
+ TRequestStatus &aRequest);
+
+ /**
+ * Calling Cancelperation cancels the current operation of
+ * Software Install. On cancellation Software Install performs
+ * full rollback of the current operation.
+ *
+ * Note that the cancellation is asynchronous and its completion
+ * will be notified by the completion of the original
+ * install/uninstall request (with a status of KErrCancel).
+ */
+ virtual void CancelOperation();
+
+
+ /**
+ * Destructor for this class
+ */
+ IMPORT_C virtual ~CAsyncLauncher();
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+ /**
+ * Starts getting the component info in case of a locally available SISX file.
+ *
+ * @param aUiHandler UI implementation
+ * @param aFileName Local name of the SISX file
+ * @param aInstallPrefs Installation preferences
+ * @param aComponentInfo Component information has to be returned back
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ * @see CInstallPrefs
+ */
+ IMPORT_C void GetComponentInfoL(MUiHandler& aUiHandler,
+ const TFileName& aFileName,
+ const CInstallPrefs& aInstallPrefs,
+ Usif::CComponentInfo& aComponentInfo,
+ TRequestStatus &aRequest);
+
+ /**
+ * Starts getting the component info with package data provided by file handle.
+ *
+ * @param aUiHandler UI implementation
+ * @param aFileHandle File handle of the file to install.
+ * @param aInstallPrefs Installation preferences
+ * @param aComponentInfo Component information has to be returned back
+ * @param aRequest Client's CActive object's iStatus
+ * @see MUiHandler
+ * @see CInstallPrefs
+ */
+ IMPORT_C void GetComponentInfoL(MUiHandler& aUiHandler,
+ RFile& aFileHandle,
+ const CInstallPrefs& aInstallPrefs,
+ Usif::CComponentInfo& aComponentInfo,
+ TRequestStatus &aRequest);
+#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
+ /**
+ * Starts software installation in case of a locally available SISX file.
+ *
+ * @param aUiHandler UI implementation
+ * @param aFileName Local name of the SISX file
+ * @param aInstallPrefs Installation preferences
+ * @param aRequest Client's CActive object's iStatus
+ * @param aDeviceSupportedLanguages Set of languages which device supports.If the array
+ * passed is empty, then the behavior will be same
+ * as the InstallL API without aDeviceSupportedLanguages
+ * option.
+ * @see MUiHandler
+ * @see CInstallPrefs
+ */
+ IMPORT_C void InstallL(MUiHandler& aUiHandler,
+ const TFileName& aFileName,
+ const CInstallPrefs& aInstallPrefs,
+ const RArray<TInt>& aDeviceSupportedLanguages,
+ TRequestStatus &aRequest);
+
+ /**
+ * Starts software installation with package data provided by means of IPC.
+ *
+ * @param aUiHandler UI implementation
+ * @param aFileHandle File handle of the file to install.
+ * @param aInstallPrefs Installation preferences
+ * @param aRequest Client's CActive object's iStatus
+ * @param aDeviceSupportedLanguages Set of languages which device supports.If the array
+ * passed is empty, then the behavior will be same
+ * as the InstallL API without aDeviceSupportedLanguages
+ * option.
+ * @see MUiHandler
+ * @see CInstallPrefs
+ */
+ IMPORT_C void InstallL(MUiHandler& aUiHandler,
+ RFile& aFileHandle,
+ const CInstallPrefs& aInstallPrefs,
+ const RArray<TInt>& aDeviceSupportedLanguages,
+ TRequestStatus &aRequest);
+
+ /**
+ * Starts software installation with package data provided by means of IPC.
+ *
+ * @param aUiHandler UI implementation
+ * @param aDataProvider SIS data provider implementation, which may supply
+ * data either by reading a file or by streaming
+ * @param aInstallPrefs Installation preferences
+ * @param aRequest Client's CActive object's iStatus
+ * @param aDeviceSupportedLanguages Set of languages which device supports. If the array
+ * passed is empty, then the behavior will be same
+ * as the InstallL API without aDeviceSupportedLanguages
+ * option.
+ * @see MUiHandler
+ * @see MSisDataProvider
+ * @see CInstallPrefs
+ */
+ IMPORT_C void InstallL(MUiHandler& aUiHandler,
+ MSisDataProvider& aDataProvider,
+ const CInstallPrefs& aInstallPrefs,
+ const RArray<TInt>& aDeviceSupportedLanguages,
+ TRequestStatus &aRequest);
+
+
+
+private:
+ CAsyncLauncher(const CAsyncLauncher&); // Disable copy construction
+ const CAsyncLauncher &operator=(const CAsyncLauncher&); // Disable assignment
+
+ /**
+ * Constructor for CAsyncLauncher is private - instance can
+ * only be created via NewLC or NewL.
+ */
+ CAsyncLauncher();
+
+ TBool VerifyBusyL(TRequestStatus &aRequest);
+
+ void DoInstallL(TSisHelperStartParams& aHelperParams,
+ MUiHandler& aUiHandler,
+ const CInstallPrefs& aInstallPrefs,
+ const RArray<TInt>& aDeviceSupportedLanguages,
+ TRequestStatus &aRequest);
+
+ #ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+ void DoGetComponentInfoL(TSisHelperStartParams& aHelperParams, MUiHandler& aUiHandler, const CInstallPrefs& aInstallPrefs,
+ Usif::CComponentInfo& aComponentInfo, TRequestStatus &aRequest);
+ #endif
+
+ /**
+ * Pointer to our UISS handler.
+ *
+ * Owned by this class.
+ */
+ CUissClientHandler *iUissClientHandler;
+ };
+
+} // namespace Swi
+
+#endif // __SWIASYNCLAUNCHER_H__